Magento 2 Varnish: teljes oldal cache, ami tízszerez
A Varnish a már legenerált oldalakat memóriából szolgálja ki, anélkül hogy a PHP vagy az adatbázis egyáltalán elindulna. Ez a leglátványosabb gyorsítás, amit egy Magento áruházon el lehet érni.
Számokban
A Magento gyárilag támogatja a Varnisht: maga generálja a konfigurációt és kezeli a cache érvénytelenítést. Nem utólagos barkacs, hanem a platform tervezett része.
- PHP generálás jó szerveren100–300 ms
- Varnish találat10–50 ms
- Cél találati arány90% felett
- Kosár és checkoutsoha nem cache-elődik
- Árváltozás átfutásacélzott ürítés
Miért ez a leglátványosabb gyorsítás?
A Varnish egy HTTP gyorsítótár, amely a webszerver elé épül. A különbség drámai: amíg egy Magento oldal generálása jó szerveren is 100-300 ms, a Varnish találat ennek töredéke. A Magentóban van beépített, alkalmazás szintű teljes oldal cache is; a Varnish ehhez képest azért nagyságrenddel gyorsabb, mert a kérés el sem éri a PHP-t.
Hogyan marad személyes az oldal?
Ez a leggyakoribb félreértés a Varnish körül. A Magento kétféle technikával oldja meg: a személyes tartalomrészek (kosár darabszám, üdvözlés, vevőcsoport szerinti árak) külön AJAX kérésben érkeznek a cache-elt váz mellé, egyes blokkok pedig ESI technikával töltődnek külön.
A kosár, a checkout és a fiók oldalak eleve nem cache-elhetők, ezek mindig frissen generálódnak. Jól beállítva a vásárló semmit nem vesz észre, csak azt, hogy minden azonnal betölt.
A kérés útja
- 01Látogató kérése
- 02Nginx: HTTPS terminálás
- 03Varnish: találat esetén kész válasz memóriából
- 04Találat híján: Magento generálás, majd eltárolás
A purge jogosultság korlátozva: csak a Magento ürítheti a cache-t. Ehhez jön a grace mód: ha a backend átmenetileg lassú vagy elérhetetlen, a Varnish a lejárt tartalmat szolgálja ki hibalap helyett. Terhelési csúcsban ez üzletmentő tud lenni.
A Varnish annyit ér, amekkora a találati aránya
90% feletti hit rate a cél. Ha ennél rosszabb, keresni kell az okát: a hit rate monitorozása nálunk az üzemeltetés alapfelszerelése.
Mi viszi le a találati arányt?
Session-t indító vagy cache-elhetetlen fejlécet küldő harmadik feles modulok. Feleslegesen egyedi URL paraméterek, hiszen a cache szempontjából minden paraméter-variáns külön oldal.
Túl rövid cache élettartam és a gyakori teljes cache ürítés: minden ürítés után újra kell építeni a teljes gyűjteményt.
Cache előmelegítés
Ürítés vagy nagy termékfrissítés után a fontos oldalakat (főoldal, kategóriák, top termékek) érdemes géppel előjáratni.
Így az első élő látogató is már cache-ből kapja őket, nem ő fizeti meg a generálás idejét. Ezt ütemezetten, a napi import után futtatjuk.
Varnish és HTTPS: a helyes architektúra
A Varnish nem beszél TLS-t, ezért a szokásos felállás: elöl Nginx végzi a HTTPS terminálást, mögötte a Varnish, mögötte a Magento webszervere. Ehhez jön a purge jogosultság korlátozása és a grace mód beállítása.
Gyakran ismételt kérdések a Varnishról
Mennyit gyorsít a Varnish a Magento 2-n?
A kosár és a checkout is cache-ből jön?
Miért alacsony a Varnish találati arányom?
Varnish vagy Redis kell?
Árváltozásnál mikor frissül az oldal?
CDN kiváltja a Varnisht?
Kapcsolódó cikkek
Működik jól a cache-ed?
Az állapotfelmérés megmondja, van-e Varnish az áruház előtt, mekkora a találati arány és mi viszi le, ha alacsony.