SQLite Object Cache jako brutálně jednoduchý plugin pro zrychlení WordPressu

Většina webů na WordPressu má aktivní nějaký cacheovací plugin. Většinou řeší cache pro stránky. Object cache často zůstává stranou, přestože u některých webů přináší větší přínos než samotné cachování stránek.

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.

Image
WordPress a statistika pluginu SQLite Object Cache
WordPress a statistika pluginu 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.

Image
Statistika rychlosti sestavení stránky v panelu Query Monitoru
Statistika rychlosti sestavení stránky v panelu Query Monitoru

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 %.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

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.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Poslední komentáře