Vynucení ukládání do mezipaměti Varnish v systému LWS

Procédure

V této dokumentaci vysvětlíme krok za krokem, jak přinutit Varnish a prohlížeče, aby vaše prostředky uchovávaly v mezipaměti, i když odesílají požadavky Pragma: no-cache nebo Cache-Control: no-cache.

1. Kontext a architektura LWS

Sdílený hosting LWS a spravované balíčky cPanel/VPS jsou založeny na architektuře :

Prohlížeč ⇄ NGINX (SSL + HTTP/2) ⇄ Varnish Cache ⇄ Apache/PHP-FPM

  • NGINX spravuje TLS a komprimuje obsah.
  • Varnish (nejrychlejší mezipaměť ) se používá jako reverzní proxy server pro ukládání odpovědí HTTP.
  • Apache nebo PHP-FPM generují finální odpověď, když Varnish nemá HIT.

Pokud je vše správně nakonfigurováno, může Varnish poskytovat až 1000krát rychlejší přístup než přímý přístup k PHP a zároveň odlehčit procesoru serveru.

2. Připomínka: Jak se Varnish rozhoduje o ukládání do mezipaměti?

Prvek Vliv na mezipaměť Jak jej ovlivnit
Metoda Způsobilé jsou pouze GET a HEAD Vyhněte se POST pro veřejné stránky
Hlavičky odpovědi Cache-Control, Expires, Pragma Určete dobu trvání a rozsah Nastavte pomocí souboru .htaccess (viz §3).
Cookies / Set-Cookie Přítomnost jednoho souboru cookie = ve výchozím nastavení bez ukládání do mezipaměti Odstranění nebo zakázání nepotřebných souborů cookie
Stav HTTP 200, 203, 301, 302, 404, 410 jsou kešovatelné Žádná akce, ale vyhněte se 500!

[tipy]Varnish ve výchozím nastavení ignoruje Cache-Control: no-cache zaslaný prohlížečem pro statické soubory, ale respektuje "logiku revalidace", pokud je objekt již v mezipaměti[/tipy].

3. Řízení doby životnosti pomocí souboru .htaccess

Aktivujte modul mod_headers (v LWS je to výchozí nastavení) a pak umístěte následující úryvek kamkoli chcete:


  Nastavte hlavičku Cache-Control "public, max-age=3600, s-maxage=3600, stale-while-revalidate=60, stale-if-error=86400" Nastavte hlavičku Expires "Thu, 31 Dec 2037 23:55:55 GMT".
  • max-age: doba trvání (v sekundách) v prohlížeči.
  • s-maxage: konkrétní doba trvání pro sdílené mezipaměti (Varnish/CDN).
  • stale-while-revalidate: umožňuje Varnish obsluhovat zastaralý obsah, zatímco jej obnovuje na pozadí.
  • stale-if-error: servíruje zastaralou verzi, pokud backend odpoví chybou (fail-safe).

3.1 Cílení podle složek

Umístění stejného souboru .htaccess do složky "/images/" aplikuje pravidlo pouze na složku "images".

3.2 Cílení podle přípony


  
    Nastavení hlavičky Cache-Control "public, max-age=2592000, s-maxage=2592000, immutable".  

immutable: říká prohlížeči, že není vyžadována žádná revalidace, dokud objekt nevyprší; ideální pro soubory s verzí (style.483bf.css).

3.3 Krátká mezipaměť pro HTML


  Nastavení hlavičky Cache-Control "public, max-age=300, s-maxage=600, must-revalidate".

Vyprší po 5 min na straně klienta a 10 min na straně Varnish, poté must-revalidate.

4. Scénáře reálného použití

Reálný případ Fragment souboru .htaccess Proč by se to mělo dělat?
Vstupní stránka se aktualizuje každou hodinu max-age=600, s-maxage=1200 Návštěvníci dostávají data "téměř v přímém přenosu" bez přetížení PHP
Verzované CSS/JS max-age=31536000, neměnné Prakticky žádný provoz na serveru, okamžité načítání
Obrázky produktů v elektronickém obchodě max-age=604800 Snižuje TTFB, zrychluje katalog
Back-office / wp-admin bez úložiště, soukromé Vyhýbá se ukládání citlivých dat do sdílené mezipaměti

5. Vyčištění nebo zneplatnění mezipaměti

  1. V panelu LWS: Optimalizace a výkon > LWS Cache > Vyprázdnit mezipaměť.
  2. HTTP PURGE (pokud je povoleno):
    curl -X PURGE -H "Host: example.com" https://exemple.com/chemin/ressource.jpg
  3. Zákaz podle výrazu (pokročilé VCL):
    ban req.http.host == "example.com" && req.url ~ "/images/"

6. Testování a ladění

curl -I https://exemple.com/style.css

Podívejte se na :

  • Age: 356 → Varnish doručil odpověď starou 356 s.
  • Cache-Control: public, max-age=2592000, s-maxage=2592000, immutable
  • X-Cache: HIT (nebo MISS).

Pomocí Chrome/Edge: DevTools > Network > Disable cache lze simulovat prvního návštěvníka.

7. Běžná úskalí

  1. Zbytečné soubory cookie: Mnoho témat WordPressu nastavuje soubor cookie i pro veřejné stránky. Odstraňte je nebo je zakažte prostřednictvím souboru functions.php.
  2. Řetězce dotazů: Ve výchozím nastavení vytváří řetězec ?v=123 nový záznam v mezipaměti. Místo toho použijte verzi v názvu souboru.
  3. Citlivý obsah: formuláře, stránky zákaznické zóny ➡ no-store, private, max-age=0.
  4. Komprese Brotli/Gzip: aktivujte je před vrstvou Varnish, abyste se vyhnuli dvojímu ukládání do mezipaměti.

8. Shrnutí osvědčených postupů

  • Používejte s-maxage ⩾ max-age, abyste udrželi mezipaměť proxy serveru delší než mezipaměť prohlížeče.
  • Na každý soubor, jehož název obsahuje hash, nasaďte immutable.
  • Nemíchejte funkci Obsolete Expires s funkcí max-age s výjimkou starších prohlížečů.
  • TTL dokumentujte v souboru CACHE_POLICY.md pro tým.

9. Užitečné zdroje

✅ Vaši mezipaměť Varnish máte nyní pod kontrolou!

Ohodnotit tento článek :

Tento článek byl pro vás užitečný ?

Article utileAno

Article non utileNe

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Podobné články

1mn čtení

Jak mohu získat přístup ke statistikám návštěvnosti webu?

1mn čtení

Jak aktivuji Mod_PageSpeed na svém webu?

1mn čtení

Jak mohu používat moduly mezipaměti v panelu LWSPanel?

3mn čtení

Zrychlete svůj web pomocí mezipaměti LWS


Položte týmu LWS a jeho komunitě otázku