WordPress, cache a zátěž serveru

Když se řekne cache v souvislosti s WordPressem, tak zkušenějším uživatelům naskočí pravděpodobně představa použití nějakého cachovacího pluginu (nejčastěji Hyper Cache a WP Super Cache) a konstatování, že při zvýšení návštěvnosti je pro rychlejší načítání WordPressu cachování stránek nutností. Jinou otázkou je, zda je vždy dobré k tomuto účelu použít právě zmíněné pluginy…

Těm, komu je pojem cache dosud neznámým, mohu snad krátce upřesnit, že se jedná o vyrovnávací paměť, která urychluje přístup k často používaným datům. Opakovaně navštěvované (v našem případě) jednotlivé webové stránky se do této vyrovnávací paměti uloží a při jejich opakované návštěvě se z ní vyvolají a stránky jsou tak načteny rychleji, navíc s menší zátěží serveru, protože se v případě webových stránek ukládají v jejich statické (HTML) podobě a nevyžadují tudíž zpracování požadavků serverem.

Bez použití nějakého typu cache se při používání WordPressu velmi pravděpodobně neobejdete už cca při návštěvnosti kolem 1500 UIP denně. Přesnější by bylo říci, že je ovšem neméně důležité rozložení této návštěvnosti v průběhu dne a hlavně počet zobrazování stránek (page views). Obvykle však lze předpokládat, že čím více návštěvníků, tím více bude zatěžován server současným odesíláním většího množství požadavků na zobrazení stránek. Čím více těchto dotazů přichází současně, tím víc je server zatěžován a hrozí jeho spadnutí – samozřejmě i v závislosti na nastavení serveru, ale spíše je předem třeba počítat se značnými limity běžných webhostingů a serverů.

Z výše popsaného fungování cache je snad jasné, že pokud se jednou již navštívená stránka načte bez nutnosti vykonání dynamických příkazů serverem, zátěž serveru se výrazně sníží. A o to nám samozřejmě jde.

Všude na internetu se v souvislosti se zvýšením rychlosti stránek běžících pod WordPressem a snížením jeho nároků na server při rostoucí návštěvnosti dočtete, že je třeba použít nějaký cachovací plugin. Podobných pluginů je více, z těch nejvíce používaných stačí snad zopakovat dva, které jsem zmiňovala v úvodu a patří k nejpoužívanějším: WP Super Cache a Hyper Cache. Za běžných podmínek a při odpovídajícím nastavení serveru skutečně tyto pluginy fungují, jak jsem výše popsala, ale není tomu tak vždy. Jak to?

Plugin WP Super Cache ke stažení:

http://wordpress.org/extend/plugins/wp-super-cache/

Plugin Hyper Cache ke stažení:

http://wordpress.org/extend/plugins/hyper-cache/

Zejména o pluginu WP Super Cache je známo, že nefunguje správně na serveru, kde je nastaven, zapnut SAFE MODE (ON), správně funguje jen při vypnutém SAFE MODE (OFF), což si na některých hostinzích, v čele s free hostingy, zkrátka nevymůžete. Pokud máte placený hosting, je nutné často o vypnutí SAFE MODE požádat, nebývá to automaticky nastaveno. Vypnutí SAFE MODE je ostatně celkově lepší pro chod WordPressu jako takového, zejména jeho aktualizace a využívání některých pluginů.

Pokud WP Super Cache nefunguje, můžete zkusit například Hyper Cache, či další z řady podobných pluginů. Pokud dochází k nefunkčnosti či padání serveru, někdy jde také například o nekompatibilitu s dalšímu pluginy či potřebu jiného způsobu cachování.

Může se vám stát, že na některých hostinzích po aktivaci těchto pluginů místo jejich usnadnění práce serveru, tento server během několika minut či hodin spadne. Příkladem takového hostingu je například zahraniční Dreamhost, ale je jich nepochybně celá řada i u nás.

Na dalším hostingu vám mohou cache pluginy komplikovat život z prostého důvodu, že je zde již nastaveno vlastní cachování serveru. To mohu potvrdit z vlastní zkušenosti, protože můj poskytovatel virtuálního serveru mi doporučil nepoužívat na webu cache pluginy, protože cachování je nastaveno na serveru jako takovém. I pro tento případ je tedy lepší se zeptat svého poskytovatele hostingu.

Nejsem na cache a jeho vliv na servery odborník, takže vám nepopíšu všechny důvody komplikací s používáním cache pluginů, ale myslím, že je dobré vědět, že skutečně není namístě domnívat se, že cache pluginy jsou samospasitelné, a pak se nestačit divit, jak to, že naopak server nepochopitelně zatíží. Pokud se chcete dozvědět více například o různých typech cache (pro MySQL databázi, pro PHP či vnitřní cache), zkuste si projít anglický článek pod prvním odkazem níže.

Ke snížení zátěže webu lze též doporučit používat pokud možno nejnovější verze WordPressu, na jejichž ladění této známé problematiky se stále pracuje. Dále je také moudrým řešením provést deaktivaci či ještě lépe odinstalování nepotřebných pluginů, které jste nasadili třeba jen ze zkušebních důvodů…

Doporučené zdroje:

http://www.arnebrachhold.de/2007/02/16/four-plus-one-ways-to-speed-up-the-performance-of-wordpress-with-caching/

http://codex.wordpress.org/WordPress_Optimization/Caching



Přečtěte si také:



Kategorie : Pluginy, Užitečné, WordPress
Štítky: , , , ,

9 x okomentováno “WordPress, cache a zátěž serveru”

Přidat komentář (+)

  1. Robert napsal:

    Dobrý den, zajímali by mě zkušenosti uživatelů s různými CACHE pluginy. Které používáte a proč? Děkuji.

  2. WPress napsal:

    Chápu to jako dotaz „do pléna“, takže jen za sebe dodám, že stále platí výše popsané, cache pluginy aktuálně nevyužívám. Ani mi nepřešel momentálně přes cestu nějaký článek, kde bych se setkala s popsanými zkušenostmi vzhledem k aktuálnímu WordPressu 2.9.x.

  3. Aktualizace napsal:

    Tak tady jsem narazila na další z cache pluginů, který slibuje zrychlení stránek a označuje se za alternativu WP SuperCache pluginu, jedná se o plugin Quick Cache:

    http://wordpress.org/extend/plugins/quick-cache/

  4. Bohumil Stejskal napsal:

    Používám wp-super cache, ale mám na webu 500k pageviews denně a server to nezvládá. (i7 s 12GB ram) Vím, že existuje podobný web s dvojnásobným počtem pageviews a zvládá to v pohodě.

    Nevíte někdo, jak lépe ještě nastavit server, aby to zvládal?

    • kamil napsal:

      minimalizovat alokovanou paměť (pokud wp potřebuje pro běh 40MB paměti tak nemít memory_limit víc než 48 MB. Zkontrolovat připojení do databáze (kolik připojení a dotazů je potřeba na jeden pageview). Snažit se pokud možno množství připojení minimalizovat. Existuje na to výborný plugin (na jméno si nevzpomenu, ale google bude vědět)
      No a poslední věc které dost pomáhá je minimalizovat množství obrázků ve vzhledu. Ideálně používat pouze CSS nebo obrázky do 10kb. Navíc se vyplatí používat na obrázky nějakou externí službu – zaplatit si nějaký webhosting na kterém budete mít naduplikované obrázky a ze kterého je budete číst. Také na to existuje plugin. Navíc takhle můžete škálovat i databázi. Plugin hyper-DB (nebo tak nějak) umí velice dobře rozložit zátěž do více databází. Takže vlastně můžete za pár kaček na měsíc (webhosting) ušetřit velkou část výkonu serveru na zpracovávání scriptů. Je pravda, že to chce trochu práce, ale dost to pomáhá.
      Můj komentář je pravda dost opožděný, ale věřím, že někomu pomůže 😉

  5. Kickin napsal:

    Za sebe můžu doporučit
    http://wordpress.org/extend/plugins/wp-widget-cache/
    Tenhle plugin pracuje sice jen s widgety, ale vpohodě jsem ho zprovoznil i na freehostingu a výsledek byl opravdu viditelný (ukládal jsem do cache jen 4 ze 6 widgetů a rozdíl mezi nima při načítání stránky jde skutečně vidět) Nejlepší na tom je, že ho lze použít zároveň i s wp-super cache. Nevím sice jak moc to pomůže, ale někde sem četl, že dost.

    Jinak co se týče zvýšení výkonu tak jen všeobecně co pomohlo mi:

    1. Zredukování počtu pluginů na minimum – radši přidám někde pár řádku kódu (napořád) než abych nesmyslně zvyšoval počet dotazů na db různýmy, mnohdy opravdu zbytečnými, pluginy.

    2. Zredukovat počet widgetů a různých pakáren, které stejně většina návštěvníků nikdy nevyužije (dodnes jsem nepochopil k čemu třeba slouží kalendář na některých stránkách – vás zajímá jaké články byli přidané třeba dne 13.5.1976? Mně ne, já přece hledám obsah 😀 ) – všechno to jsou jen dotazy na db navíc!

    2. Trvalé odkazy – mezi např. %postname%-%post_id% a %post_id%-%postname% je obrovský výkonostní rozdíl. viz. třeba: http://core.trac.wordpress.org/ticket/8958

    3. Cache jak na straně serveru tak i v samotném WP + optimalizace (je rozdíl jestli X krát denně stáhnu do prohlížeče 50Kb nebo 1Mb/stránku )

    …no ale nikdy sem neměl za den 500k pageviews, to už je trochu jiné kafe… 😀

  6. WPress napsal:

    Díky, to jsou pěkné postřehy z praxe. 🙂

    To nepoužívání pluginů a dopsání kódu je dobrá cesta pro programátory, ale holt ne pro běžného uživatele. Ale je fakt, že už jen odstranění a povypínání nepoužívaných a „zbytečných“ pluginů udělá své. Někdy třeba by mohlo pomoci zkusit zvolit jiný Cache plugin než je ten stávající. Ale to už je otázka… 🙂

  7. Renka napsal:

    Já cache nepoužívám a to proto, že znemožňuje ajaxovým pluginům jako postrating apod správně fungovat. Asi to jde nějak obejít, ale zatím se mi nepodařilo přijít na to jak

Okomentovat

Pro vkládání komentářů musíte být přihlášen/a.