Procédure
V této dokumentaci vám krok za krokem vysvětlíme, jak přimět Varnish i prohlížeče, aby vaše ресурсы udržovaly v cache, i když tyto posílají požadavky Pragma: no‑cache nebo Cache‑Control: no-cache.
Tarify sdíleného hostingu a spravovaného cPanel/VPS od LWS vycházejí ze stacku:
Prohlížeč ⇄ NGINX (SSL + HTTP/2) ⇄ Varnish Cache ⇄ Apache/PHP-FPM
Když je vše správně nakonfigurováno, může Varnish doručovat až 1000krát rychleji než přímý přístup k PHP, a zároveň odlehčuje CPU serveru.
| Prvek | Dopad na cache | Jak jej ovlivnit |
| Metoda | Vhodné jsou pouze GET a HEAD | Pro veřejné stránky se vyhněte POST |
| Odpovědní hlavičky Cache-Control, Expires, Pragma | Určují dobu a rozsah | Nastavit přes .htaccess (viz §3) |
| Cookies / Set-Cookie | Přítomnost cookie = ve výchozím stavu bez ukládání do cache | Odstranit nebo neutralizovat zbytečné cookies |
| HTTP status | 200, 203, 301, 302, 404, 410 jsou cacheovatelné | Bez zásahu, ale vyhněte se 500! |
Trucs et astuces Varnish ve výchozím nastavení ignoruje Cache-Control: no-cache odeslaný prohlížečem pro statické soubory, ale respektuje „revalidation logic“, pokud je objekt již v cache.
Aktivujte modul mod_headers (u LWS je to ve výchozím stavu) a poté vložte následující úryvek tam, kam chcete:
Header set Cache-Control "public, max-age=3600, s-maxage=3600, stale-while-revalidate=60, stale-if-error=86400"
Header set Expires "Thu, 31 Dec 2037 23:55:55 GMT"
Umístění stejného souboru .htaccess do složky "/images/" použije pravidlo pouze na složku "images".
Header set Cache-Control "public, max-age=2592000, s-maxage=2592000, immutable"
immutable : říká prohlížeči, že není nutná žádná revalidace, dokud objekt nevyprší; ideální pro verzované soubory (style.483bf.css).
3.3. Krátká cache pro HTML
Header set Cache-Control "public, max-age=300, s-maxage=600, must-revalidate"
Expiruje po 5 min na straně klienta a po 10 min na straně Varnishe, poté je revalidace povinná.
| Reálný případ | Úryvek z .htaccess | Proč? |
| Landing page aktualizovaná každou hodinu | max-age=600, s-maxage=1200 | Návštěvníci mají data „téměř live“ bez zatížení PHP |
| Verzované CSS/JS | max-age=31536000, immutable | Téměř nulový provoz na serveru, okamžité načítání |
| Obrázky produktů e‑commerce | max-age=604800 | Snižuje TTFB, zrychluje katalog |
| Back‑office / wp-admin | no-store, private | Brání ukládání citlivých dat do sdílené cache |
Z vašeho hostingu (PHP skript vašeho webu, úloha Cron nebo SSH terminál) nevyžaduje vyprázdnění cache Varnish žádný token:
curl -X PURGE https://exemple.com/chemin/ressource.jpg
curl -X PURGE -H 'X-Purge-Method: regex' 'https://exemple.com/images/.*'
curl -X FULLPURGE https://exemple.com
$ch = curl_init('https://exemple.com/chemin/page.html');
curl_setopt_array($ch, [CURLOPT_CUSTOMREQUEST => 'PURGE', CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 20]);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 200 : cache purge ; 405 : purge refusee
curl_close($ch);Kompletní skript připravený pro úlohu Cron je uveden v nápovědě Zrychlení vašeho webu pomocí Fastest Cache. Cache můžete také vymazat z panelu tlačítkem „Purger le cache“ ve Fastest Cache.
curl -I https://exemple.com/style.cssSledujte:
V Chrome/Edge: DevTools > Network > Disable cache může simulovat prvního návštěvníka.
✅ Vaše cache Varnish je nyní pod kontrolou!
Položte ji týmu LWS a komunitě. Odpověď bude zveřejněna po kontrole moderátorem.