Modul 6 · 6.2
Gyorsítótárazás (caching)
Modul 6: Sebesség · Olvasási idő: 9 perc
Tanulási cél: E lecke után képes lesz elmagyarázni, milyen gyorsítótártípusok léteznek, és helyesen beállítani és ellenőrizni egy oldal gyorsítótárat.
Kulcsfogalmak: oldal gyorsítótár, böngésző gyorsítótár, Cache-Control, objektum gyorsítótár, Redis, OPcache, CDN, gyorsítótár bővítmény, LiteSpeed Cache, kivételek (bejelentkezve, kosár, fizetés), gyorsítótár ürítése, duplikált gyorsítótár bővítmények
Gyorsítótár: ne végezze el kétszer ugyanazt a munkát
A gyorsítótár megőrzi egy munka eredményét, hogy legközelebb ne kelljen újra elvégezni. Egy WordPress-weboldalon négy helyen történik ez, a legnagyobbtól a legkisebb hatásúig:
| Típus | Mit tárol | Hol | Hatás |
|---|---|---|---|
| Oldal gyorsítótár | Az oldal teljes HTML-kódja | A szerveren (vagy egy CDN-nél) | A legnagyobb nyereség: a PHP, a bővítmények és az adatbázis kimarad |
| Böngésző gyorsítótár | Stíluslapok, szkriptek, képek, betűtípusok | A látogató böngészőjében | A második oldal gyorsabban betöltődik, mert a fájlok már ott vannak |
| Objektum gyorsítótár | Adatbázis-lekérdezések eredményei | A szerver memóriájában (Redis, Memcached) | Ott segít, ahol az oldal gyorsítótár nem tud, például bejelentkezett felhasználóknál és webáruházaknál |
| OPcache | A lefordított PHP-kód | A PHP memóriájában | A PHP-nek nem kell minden kéréskor újra beolvasnia a fájlokat; a legtöbb tárhelyszolgáltatónál alapértelmezetten be van kapcsolva |
Az oldal gyorsítótár
Az 1.2 lecke megmutatta: gyorsítótár nélkül a WordPress minden látogatáskor újra elkészíti a teljes oldalt. Egy oldal gyorsítótárral az első látogató elkészítteti, a következők pedig a mentett HTML-t kapják. Egy másodperces TTFB így akár néhány századmásodpercre is csökkenhet, és a csomagja sokkal több egyidejű látogatót bír el.
Az, hogy hogyan kap oldal gyorsítótárat, a webszervertől függ:
- LiteSpeed (sok osztott tárhely, köztük a WebOké): a webszervernek saját gyorsítótára van. Az ingyenes LiteSpeed Cache bővítmény vezérli ezt a WordPressből: mely oldalak kerülhetnek a gyorsítótárba, mikor kell üríteni azokat. Mivel a gyorsítótár magában a webszerverben van, egy mentett oldalnál egyáltalán nem indul el a PHP.
- Apache vagy nginx: egy gyorsítótár bővítmény, amely a HTML-t fájlként tárolja, például WP Super Cache, W3 Total Cache vagy egy fizetős bővítmény, például WP Rocket. Vagy egy gyorsítótár, amelyet a tárhelyszolgáltató szerveroldalon kezel.
- A felügyelt WordPress-tárhely gyakran saját gyorsítótárral rendelkezik; ott általában nem kell gyorsítótár bővítményt telepíteni.
Válasszon egyet. Két gyorsítótár bővítmény egyszerre (például LiteSpeed Cache és WP Rocket) akadályozza egymást: dupla munka, nem ürülő oldalak, furcsa hibák. Egy LiteSpeed-szerveren a LiteSpeed Cache a webszerver gyorsítótárával működik együtt; ezt másik gyorsítótár bővítmény nem tudja megtenni.
Mi nem kerülhet a gyorsítótárba
Egy oldal gyorsítótár mindenkinek ugyanazt a HTML-t adja. Ez hibát okoz olyan oldalaknál, amelyek látogatónként eltérőek:
- bejelentkezett felhasználók (a Vezérlőpult sáv, „Üdvözlet, Lisa”);
- a kosár, a fizetés és a Saját fiók egy webáruháznál;
- olyan oldalak, amelyeken egyszeri kóddal (nonce) ellátott űrlap található, amely egy idő után lejár;
- olyan oldalak, amelyek helyszín, nyelv vagy egy süti alapján mást mutatnak.
A jó gyorsítótár bővítmények automatikusan kihagyják a bejelentkezett felhasználókat és a jól ismert WooCommerce-oldalakat. Más bővítményeknél (egy tagsági terület, egy foglalási rendszer) saját kezűleg kell beállítania a kivételeket. A hiba jele: egy látogató valaki más kosarát látja, vagy egy űrlap „lejárt” vagy „érvénytelen kérés” üzenetet ad.
Ürítés: mikor elavult a gyorsítótár?
Ha módosít egy oldalt, akkor a mentett verziót el kell távolítani. A gyorsítótár bővítmények egy bejegyzés mentésekor általában azt az oldalt, a kezdőlapot és az archívumokat ürítik. A menü, a sablon vagy egy modul módosításakor gyakran a teljes gyorsítótárat ki kell üríteni. Ha egy módosítás után mégis a régi verziót látja, ürítse ki a gyorsítótárat (a gyorsítótár bővítmény Vezérlőpult sávjában), és ellenőrizze egy privát ablakban, hogy a saját böngésző gyorsítótára ne zavarjon bele.
A böngésző gyorsítótár
A szerver fejlécekkel közli a böngészővel, mennyi ideig őrizheti meg egy fájlt:
cache-control: public, max-age=31536000Ez azt jelenti: őrizze meg ezt egy évig. Stíluslapoknál, szkripteknél, betűtípusoknál és képeknél egy hosszú idő tökéletesen megfelel, mivel a WordPress egy új verziónál más ?ver= jelölést tesz a cím végére, és a böngésző így új fájlnak tekinti. Magánál a HTML-nél egy rövid idő (vagy semmi) a szokásos, hogy a látogatók gyorsan lássák a módosításokat.
Sok tárhelyszolgáltató és gyorsítótár bővítmény ezt elintézi. E lecke feladatában ezt fogja ellenőrizni.
Objektum gyorsítótár és Redis
Egy oldal gyorsítótár nem segít a bejelentkezett felhasználóknál és a kosárnál. Itt egy objektum gyorsítótár segít: a WordPress megőrzi az adatbázis-lekérdezések eredményét a memóriában, egy olyan programban, mint a Redis vagy a Memcached. Amikor legközelebb ugyanaz a lekérdezés érkezik, a WordPress a memóriából veszi a választ az adatbázis helyett.
Ez elsősorban webáruházak, tagsági weboldalak és sok bejelentkezett szerkesztővel rendelkező weboldalak számára hasznos. Egy átlagos, oldal gyorsítótárral rendelkező információs weboldal esetében a különbség kicsi. Az objektum gyorsítótárhoz az szükséges, hogy a tárhelyszolgáltató kínáljon Redis-t vagy Memcached-et; ezután egy bővítménnyel kapcsolja be (a LiteSpeed Cache tudja ezt, de léteznek önálló bővítmények is).
A CDN
A CDN (content delivery network) a világ számos pontján található szerverek hálózata, amelyek a fájlok (és néha a teljes oldalak) másolatait tárolják. A látogató a hozzá legközelebbi szervertől kapja meg azokat. Ez elsősorban a távoli látogatóknál és nagy forgalomnál segít. Egy holland weboldal esetében, holland látogatókkal egy holland szerveren, a nyereség kicsi. Egy proxyval működő CDN (mint a Cloudflare) megváltoztatja a DNS-t és a tanúsítványt is (DNS-tanfolyam, 7.5 lecke); ezt ne tegye anélkül, hogy megértené, mit csinál.
A gyakorlatban: így néz ki egy panelen
Példaként a LiteSpeed Cache-t használjuk egy LiteSpeed-szerveren. Más gyorsítótár bővítményeknél hasonló beállítások találhatók más néven.
- Telepítse és aktiválja a LiteSpeed Cache bővítményt a Bővítmények > Új bővítmény hozzáadása menüpontban.
- Nyissa meg a LiteSpeed Cache > Cache menüpontot: a „Cache engedélyezése” be van kapcsolva, a „Bejelentkezett felhasználók gyorsítótárazása” ki van kapcsolva (hacsak nem tudja pontosan, mit csinál).
- Webáruház esetén: ellenőrizze a Kizárás pontnál, hogy a kosár, a fizetés és a Saját fiók szerepel-e benne (WooCommerce esetén ez automatikusan megtörténik).
- A többi összetevőt (CSS és JavaScript optimalizálása, képek) először hagyja kikapcsolva. Kapcsolja be egyenként, és minden lépés után tesztelje: pont ezek az összetevők szokták néha elrontani egy sablont.
- Ellenőrizze egy privát ablakban a fejlesztői eszközökkel (F12, Hálózat, első kérés): a második betöltésnél az
x-litespeed-cache: hitfejlécnek kell szerepelnie.
Összefoglalás
- Négy gyorsítótártípus létezik: oldal (a legnagyobb nyereség), böngésző, objektum és OPcache.
- Egy LiteSpeed-szerveren a LiteSpeed Cache vezérli a webszerver gyorsítótárát; Apache-on vagy nginx-en másik gyorsítótár bővítményt használ. Válasszon egyet.
- A bejelentkezett felhasználók, a kosár, a fizetés és a személyes oldalak nem valók az oldal gyorsítótárba.
- A menü vagy sablon módosítása után ürítse ki a gyorsítótárat, és ellenőrizze egy privát ablakban.
- Egy objektum gyorsítótár (Redis) segít webáruházaknál és bejelentkezett felhasználóknál; egy CDN elsősorban távoli látogatóknál és nagy forgalomnál.
Kvíz
Feladat
A6.2 feladat: Működik az oldalgyorsítótára? Adja meg a weboldala címét. A program kétszer, röviddel egymás után, sütik nélkül kéri le a kezdőlapot, és a második alkalommal megnézi, van-e olyan fejléc, amely gyorsítótár-találatra utal (x-litespeed-cache: hit, x-cache: HIT, cf-cache-status: HIT, egy nullánál nagyobb age, vagy egy másik ismert gyorsítótár fejléce). Ezután lekér egy stíluslapot a kezdőlapról, és ellenőrzi, hogy a böngésző legalább hét napig megőrizheti-e azt (cache-control: max-age vagy expires). Jegyezze fel, melyik gyorsítótárat használja.
További olvasnivaló
Ezek a cikkek a WebOké paneljeiben bemutatott lépéseket írják le; más paneleken hasonlóan működnek.
- DirectAdmin útmutató 18.3: A weboldalam lassú
- DirectAdmin útmutató 15.7: Redis
- A weboldalam lassú, vagy túl sok CPU-t használ: így tehető gyorsabbá
- OPcache: 30 másodperces késleltetés PHP-fájl módosításakor
- Be van kapcsolva a gzip a DirectAdminban és a LiteSpeedben vagy az Apache-ban?
- Gyorsítótárazás a WordPressben (developer.wordpress.org, angol nyelven): https://developer.wordpress.org/advanced-administration/performance/cache/
