Cacheování ve WordPressu si většina lidí spojuje hlavně s ukládáním hotových HTML stránek. To je ta klasická cache, kterou řeší pluginy nebo server. Jakmile se stránka jednou vygeneruje, WordPress ji při další návštěvě nemusí znovu skládat z databáze, šablon a pluginů. Výsledkem je rychlejší načtení a menší zátěž serveru. Tahle vrstva funguje dobře hlavně pro anonymní návštěvníky a obsah, který se často nemění.
Vedle toho ale existuje object cache, která řeší úplně jiný problém. Neukládá celé stránky, ale jednotlivé objekty v paměti. Typicky jde o výsledky databázových dotazů, konfigurace nebo části struktury webu, ke kterým se WordPress během jednoho nebo více požadavků vrací. Místo opakovaného dotazu do databáze si WordPress sáhne do paměti a data vezme odtud. To se projeví hlavně v administraci, u přihlášených uživatelů nebo na webech s komplexnější logikou.
Rozdíl mezi klasickou cache a object cache tedy není v tom, která je lepší, ale k čemu slouží. Page cache zrychluje doručení hotového obsahu. Object cache zrychluje samotné fungování WordPressu uvnitř. Ideální stav nastává ve chvíli, kdy obě vrstvy fungují spolu. WordPress pak méně sahá do databáze, rychleji skládá stránky a server má výrazně menší zátěž. Na větších webech nebo v administraci je ten rozdíl znatelný skoro okamžitě.
Jak zapnout objektovou cache ve WordPressu
Existuje několik pluginů nebo řešení pro ukládání objektové cache ve WordPressu. Protože mám většinu klientů s touto platformou na klasickém hostingu, kde nejsou k dispozici úložiště typu Redis nebo Memcached, využívám plugin SQLite Object Cache.
Podpora této jednosouborové databáze je zadrátovaná v samotném PHP a hostingy ji až na výjimky mají aktivní. A přístup k ní je v daném případě rychlejší než do klasické MySQL/MariaDB, kde má váš WordPress obvykle uložená svá data.
💡 Tip: já SQLite Object Cache používám ve spojení s pluginem WP Super Cache pro stránkovou cache a Autoptimize pro vyladění CSS a JavaScriptu. Obrázky optimalizuji pluginem Performance Lab.
Kolik dotazů do databáze ušetříte na svém webu?
Pokud se zajímáte o čísla, doporučuji před aktivací SQLite Object Cache zapnout nejdříve plugin Query Monitor. Po jeho zapnutí uvidíte v admin liště WordPressu rychlou statistiku načítání aktuální stránky.
Čísla v Query Monitoru říkají, jak dlouho se stránka na serveru generovala, kolik ten proces spotřeboval operační paměti, jak dlouho trvaly dotazy do databáze a kolik jich celkem bylo.
Na lištu s čísly klikněte. Ve spodní části stránky vám vyjede panel s podrobnějšími informacemi. Mimo jiné si všimněte upozornění na chybějící objektovou cache – pokud ještě nemáte SQLite Object Cache aktivní. Lze tu odhadnout, kolik sestavování různých objektů by se dalo ušetřit použitím objektové cache.
Query Monitor je užitečný i pro další ladění WordPressu. Ukazuje deprecated nebo chybové hlášky z PHP, chybná volání skriptů i konkrétní dotazy do databáze včetně délky jejich zpracování. Velmi užitečná pomůcka pro ladění na větších webech.
Pokud řešíte vlastní témata vzhledu a jejich optimalizaci, uvidíte zde použité soubory pro danou stránku, načtené skripty a styly. Nechybí seznam volaných hooků – na něj nedám dopustit, když ladím různé pluginy pro napojování WordPressu na další systémy.
Jakmile se seznámíte s fungováním Query Monitoru, aktivujte objektovou cache a zkuste si porovnat, jak se počet dotazů do databáze sníží a jaký to bude mít vliv na načítání stránky. Na jednoduchých webech možná dotazy do velké databáze eliminujete na minimum.
Jak velký vliv má objektová cache ve WordPressu?
Hlavní přínos object cache z principu zaznamenáte u větších webů, kde jsou složitější šablony, hodně dotazů do databáze nebo administrace s více přihlášenými uživateli. Jakmile se obsah skládá z mnoha částí a logika běží při každém načtení stránky znovu, paměťová cache začne šetřit čas i výkon.
Naopak u menších webů s pár stránkami a minimem dynamiky se přínos object cache často ztratí. Pokud web běží převážně pro nepřihlášené návštěvníky a dobře funguje page cache, rozdíl skoro nepoznáte.
Má osobní zkušenost praví, že na malém webu posklesne počet dotazů na jednotky, rychlost ani spotřebu paměti ale objektová cache neovlivní. Naopak, u větších webů jsem zaznamenal zvýšení rychlosti sestavení stránky o 30 %.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Přidat komentář