Procédure
W tej dokumentacji wyjaśnimy krok po kroku, jak zmusić Varnish i przeglądarki do przechowywania Twoich zasobów w pamięci podręcznej, nawet gdy wysyłają one żądania Pragma: no‑cache lub Cache‑Control: no-cache.
Pakiety hostingu współdzielonego oraz zarządzane cPanel/VPS od LWS opierają się na stosie:
Przeglądarka ⇄ NGINX (SSL + HTTP/2) ⇄ Varnish Cache ⇄ Apache/PHP-FPM
Gdy wszystko jest poprawnie skonfigurowane, Varnish może dostarczać treści nawet do 1000 razy szybciej niż bezpośredni dostęp do PHP, jednocześnie odciążając procesor serwera.
| Element | Wpływ na pamięć podręczną | Jak to kontrolować |
| Metoda | Tylko GET i HEAD są kwalifikowane | Unikać POST dla publicznych stron |
| Nagłówki odpowiedzi Cache-Control, Expires, Pragma | Określają czas trwania i zakres | Ustawić przez .htaccess (zob. §3) |
| Cookies / Set-Cookie | Obecność cookie = brak buforowania domyślnie | Usunąć lub zneutralizować niepotrzebne cookies |
| Status HTTP | 200, 203, 301, 302, 404, 410 mogą być buforowane | Brak działania, ale unikać 500 ! |
Trucs et astuces Varnish domyślnie ignoruje Cache-Control: no-cache wysyłany przez przeglądarkę dla plików statycznych, ale respektuje logikę "revalidation" jeśli obiekt jest już w cache.
Aktywuj moduł mod_headers (jest to domyślnie włączone w LWS), a następnie wstaw poniższy fragment tam, gdzie chcesz:
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"
Umieszczenie tego samego pliku .htaccess w katalogu "/images/" zastosuje regułę wyłącznie do katalogu "images".
Header set Cache-Control "public, max-age=2592000, s-maxage=2592000, immutable"
immutable : informuje przeglądarkę, że nie ma potrzeby ponownej walidacji, dopóki obiekt nie wygaśnie; idealne dla plików wersjonowanych (style.483bf.css).
3.3. Krótki cache dla HTML
Header set Cache-Control "public, max-age=300, s-maxage=600, must-revalidate"
Wygasa po 5 min po stronie klienta i po 10 min po stronie Varnisha, a następnie wymagana jest ponowna walidacja.
| Rzeczywisty przypadek | Fragment .htaccess | Dlaczego? |
| Landing page aktualizowana co godzinę | max-age=600, s-maxage=1200 | Użytkownicy otrzymują dane „prawie na żywo” bez przeciążania PHP |
| Wersjonowane CSS/JS | max-age=31536000, immutable | Praktycznie zerowy ruch na serwerze, natychmiastowe ładowanie |
| Zdjęcia produktów e-commerce | max-age=604800 | Zmniejsza TTFB, przyspiesza katalog |
| Panel administracyjny / wp-admin | no-store, private | Zapobiega zapisywaniu wrażliwych danych we współdzielonej pamięci podręcznej |
Ze swojego hostingu (skrypt PHP Twojej strony, zadanie Cron lub terminal SSH) czyszczenie cache Varnish nie wymaga żadnego tokena:
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 refusée
curl_close($ch);Pełny skrypt, gotowy do użycia w zadaniu Cron, jest dostępny w pomocy Przyspieszenie działania Twojej strony dzięki Fastest Cache. Możesz też wyczyścić cache z poziomu panelu, przyciskiem „Wyczyść cache” w Fastest Cache.
curl -I https://exemple.com/style.cssZwróć uwagę na:
W Chrome/Edge: DevTools > Network > Disable cache może zasymulować pierwszego odwiedzającego.
✅ Twój cache Varnish jest teraz pod kontrolą!
Zadaj je zespołowi LWS i społeczności. Odpowiedź zostanie opublikowana po moderacji.