Modul 6 · 6.2
Slovenčina
Caching
Modul 6: Rýchlosť · Čas čítania: 9 minút
Cieľ lekcie: Po tejto lekcii dokážete vysvetliť, aké druhy cache existujú, a dokážete správne nastaviť a skontrolovať cache stránok (paginacache).
Kľúčové pojmy: cache stránok, cache prehliadača, Cache-Control, objektová cache, Redis, OPcache, CDN, cacheovací plugin, LiteSpeed Cache, výnimky (prihlásený používateľ, košík, pokladňa), vyprázdnenie cache, duplicitné cacheovacie pluginy
Cache: nerobte tú istú prácu dvakrát
Cache uchováva výsledok práce, aby sa nabudúce nemusela robiť znova. Pri WordPress stránke existujú štyri miesta, kde sa to deje, od najväčšieho po najmenší vplyv:
| Druh | Čo sa ukladá | Kde | Efekt |
|---|---|---|---|
| Cache stránok (paginacache) | Kompletné HTML danej stránky | Na serveri (alebo v CDN) | Najväčší prínos: PHP, pluginy a databáza sa úplne preskočia |
| Cache prehliadača | Štýly, skripty, obrázky, fonty | V prehliadači návštevníka | Ďalšia stránka sa načíta rýchlejšie, pretože súbory sú už uložené |
| Objektová cache | Výsledky databázových dotazov | V pamäti servera (Redis, Memcached) | Pomáha tam, kde cache stránok nestačí, napríklad pri prihlásených používateľoch a internetových obchodoch |
| OPcache | Preložený PHP kód | V pamäti PHP | PHP nemusí pri každej požiadavke znova čítať súbory; u väčšiny hostingov je predvolene zapnutá |
Cache stránok (paginacache)
Lekcia 1.2 to ukázala: bez cache WordPress pri každej návšteve vytvára celú stránku odznova. S cache stránok ju vytvorí prvý návštevník a ďalší dostanú uložené HTML. TTFB jednej sekundy sa tak môže zmeniť na pár stotín sekundy a váš balík zvládne oveľa viac súčasných návštevníkov.
Ako cache stránok získate, závisí od vášho webového servera:
- LiteSpeed (veľa zdieľaného hostingu, vrátane WebOké): webový server má vlastnú cache. Bezplatný plugin LiteSpeed Cache ju riadi z WordPressu: ktoré stránky smú byť v cache, kedy sa majú vyprázdniť. Keďže cache je priamo vo webovom serveri, pri uloženej stránke sa PHP vôbec nespúšťa.
- Apache alebo nginx: cacheovací plugin, ktorý ukladá HTML ako súbory, napríklad WP Super Cache, W3 Total Cache alebo platený plugin ako WP Rocket. Prípadne cache, ktorú hoster rieši na úrovni servera.
- Spravovaný WordPress hosting má často vlastnú cache; tam zvyčajne žiadny cacheovací plugin neinštalujete.
Vyberte si jeden. Dva cacheovacie pluginy súčasne (napríklad LiteSpeed Cache a WP Rocket) si navzájom prekážajú: dvojitá práca, stránky, ktoré sa nevyprázdňujú, zvláštne chyby. Na LiteSpeed serveri LiteSpeed Cache spolupracuje s cache webového servera; iný cacheovací plugin to nedokáže.
Čo nepatrí do cache
Cache stránok dáva všetkým rovnaké HTML. To spôsobuje problémy pri stránkach, ktoré sú pre každého návštevníka iné:
- prihlásení používatelia (administračný panel, „Vitajte, Lucia“);
- košík, pokladňa a Môj účet v internetovom obchode;
- stránky s formulárom s jednorazovým kódom (nonce), ktorý po čase vyprší;
- stránky, ktoré na základe polohy, jazyka alebo cookie zobrazujú niečo iné.
Kvalitné cacheovacie pluginy prihlásených používateľov a bežné stránky WooCommerce automaticky vynechávajú. Pri iných pluginoch (sekcia pre členov, rezervačný systém) musíte výnimky nastaviť sami. Znak, že niečo nie je v poriadku: návštevník vidí košík niekoho iného, alebo formulár hlási „vypršané“ či „neplatná požiadavka“.
Vyprázdnenie: kedy je cache zastaraná?
Keď upravíte stránku, uložená verzia musí zmiznúť. Cacheovacie pluginy pri uložení článku zvyčajne vyprázdnia danú stránku, domovskú stránku a archívy. Pri zmene menu, témy alebo widgetu je často potrebné vyprázdniť celú cache. Ak po zmene vidíte starú verziu, vyprázdnite cache (v administračnom paneli cacheovacieho pluginu) a skontrolujte to v súkromnom okne, aby vám do toho nezasahovala vlastná cache prehliadača.
Cache prehliadača
Server hovorí prehliadaču pomocou hlavičiek, ako dlho má súbor uchovávať:
cache-control: public, max-age=31536000Toto znamená: uchovať to rok. Pre štýly, skripty, fonty a obrázky je dlhý čas v poriadku, pretože WordPress pri novej verzii pridá za adresu iný parameter ?ver= a prehliadač ho potom vníma ako nový súbor. Pre samotné HTML je bežný krátky čas (alebo žiadny), aby návštevníci rýchlo videli zmeny.
Mnohí hosteri a cacheovacie pluginy to riešia automaticky. V úlohe tejto lekcie to skontrolujete.
Objektová cache a Redis
Cache stránok nepomáha pri prihlásených používateľoch ani pri košíku. Tam pomáha objektová cache: WordPress ukladá výsledok databázových dotazov v pamäti, v programe ako Redis alebo Memcached. Keď príde ten istý dotaz nabudúce, WordPress získa odpoveď z pamäte namiesto z databázy.
To je užitočné najmä pre internetové obchody, stránky pre členov a stránky s mnohými prihlásenými redaktormi. Pri bežnej informačnej stránke s cache stránok je rozdiel malý. Objektová cache vyžaduje, aby váš hoster ponúkal Redis alebo Memcached; následne ju zapnete pluginom (vie to LiteSpeed Cache, existujú aj samostatné pluginy).
CDN
CDN (content delivery network) je sieť serverov na mnohých miestach sveta, ktoré uchovávajú kópie vašich súborov (a niekedy aj celých stránok). Návštevník ich dostane z najbližšieho servera. To pomáha najmä pri návštevníkoch zďaleka a pri vysokej návštevnosti. Pri stránke s európskymi návštevníkmi na európskom serveri je prínos malý. CDN s proxy (ako Cloudflare) mení aj vaše DNS a certifikát (DNS kurz, lekcia 7.5); nerobte to bez toho, aby ste chápali, čo to robí.
V praxi: ako to vyzerá v paneli
Ako príklad použijeme LiteSpeed Cache na LiteSpeed serveri. Iné cacheovacie pluginy majú podobné nastavenia pod inými názvami.
- Nainštalujte a aktivujte LiteSpeed Cache cez Pluginy > Nový plugin.
- Otvorte LiteSpeed Cache > Cache: „Zapnúť cache“ je zapnuté, „Cache pre prihlásených používateľov“ vypnuté (pokiaľ neviete, čo robíte).
- Pri internetovom obchode: skontrolujte v sekcii Vylúčiť, že sú tam košík, pokladňa a Môj účet (pri WooCommerce sa to deje automaticky).
- Ostatné funkcie (optimalizácia CSS a JavaScript, obrázky) nechajte najprv vypnuté. Zapínajte ich postupne, jednu po druhej, a po každom kroku otestujte: práve tieto funkcie niekedy narušia tému.
- Skontrolujte v súkromnom okne pomocou vývojárskych nástrojov (F12, Sieť, prvá požiadavka): pri druhom načítaní by malo byť uvedené
x-litespeed-cache: hit.
Zhrnutie
- Existujú štyri druhy cache: stránok (najväčší prínos), prehliadača, objektová a OPcache.
- Na LiteSpeed serveri riadi LiteSpeed Cache cache webového servera; na Apache alebo nginx použijete iný cacheovací plugin. Vyberte si jeden.
- Prihlásení používatelia, košík, pokladňa a osobné stránky nepatria do cache stránok.
- Po zmenách menu alebo témy vyprázdnite cache a skontrolujte to v súkromnom okne.
- Objektová cache (Redis) pomáha pri internetových obchodoch a prihlásených používateľoch; CDN najmä pri vzdialených návštevníkoch a vysokej návštevnosti.
Kvíz
Úloha
Úloha A6.2: Funguje vaša cache stránok? Zadajte adresu svojej stránky. Program si vyžiada domovskú stránku dvakrát krátko po sebe, bez cookies, a pri druhom pokuse sa pozrie na hlavičky, ktoré naznačujú zásah do cache (x-litespeed-cache: hit, x-cache: HIT, cf-cache-status: HIT, hodnotu age väčšiu ako 0, alebo hlavičku inej známej cache). Potom si vyžiada jeden štýl z domovskej stránky a skontroluje, či ho prehliadač smie uchovávať aspoň sedem dní (cache-control: max-age alebo expires). Zaznamenajte si, akú cache používate.
Ďalšie čítanie
Tieto články opisujú postup v paneloch WebOké; v iných paneloch fungujú podobne.
- Návod na DirectAdmin 18.3: Moja webová stránka je pomalá
- Návod na DirectAdmin 15.7: Redis
- Moja webová stránka je pomalá alebo využíva príliš veľa CPU: takto ju zrýchlite
- OPcache: 30-sekundové oneskorenie pri zmene súboru PHP
- Je v DirectAdmin a LiteSpeed alebo Apache aktivovaný gzip?
- Cache vo WordPresse (developer.wordpress.org, anglicky): https://developer.wordpress.org/advanced-administration/performance/cache/
