Procédure
In deze documentatie leggen we stap voor stap uit hoe u Varnish en browsers kunt dwingen uw resources in cache te houden, zelfs wanneer zij verzoeken Pragma: no‑cache of Cache‑Control: no-cache versturen.
De gedeelde hosting- en beheerde cPanel/VPS-formules van LWS zijn gebaseerd op de stack:
Browser ⇄ NGINX (SSL + HTTP/2) ⇄ Varnish Cache ⇄ Apache/PHP-FPM
Wanneer alles correct is geconfigureerd, kan Varnish tot 1000 keer sneller leveren dan een directe toegang tot PHP, terwijl het de CPU van de server ontlast.
| Element | Impact op de cache | Hoe beïnvloeden |
| Methode | Alleen GET en HEAD komen in aanmerking | Vermijd POST voor openbare pagina's |
| Response-headers Cache-Control, Expires, Pragma | Bepalen de duur en de scope | Instellen via .htaccess (zie §3) |
| Cookies / Set-Cookie | Een aanwezige cookie = standaard geen caching | Onnodige cookies verwijderen of neutraliseren |
| HTTP-status | 200, 203, 301, 302, 404, 410 zijn cachebaar | Geen actie, maar vermijd 500's! |
Trucs et astuces Varnish negeert standaard de Cache-Control: no-cache die door de browser wordt verzonden voor statische bestanden, maar respecteert de "revalidation logic" als het object al in de cache staat.
Activeer de module mod_headers (dit is standaard het geval bij LWS) en plaats vervolgens het onderstaande snippet waar u wilt:
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"
Door hetzelfde .htaccess-bestand in de map "/images/" te plaatsen, wordt de regel alleen toegepast op de map "images".
Header set Cache-Control "public, max-age=2592000, s-maxage=2592000, immutable"
immutable : geeft aan de browser aan dat geen revalidatie nodig is zolang het object niet is verlopen; ideaal voor versiebeheerbestanden (style.483bf.css).
3.3. Korte cache voor HTML
Header set Cache-Control "public, max-age=300, s-maxage=600, must-revalidate"
Verloopt na 5 min aan clientzijde en 10 min aan Varnish-zijde, daarna verplichte revalidatie.
| Reëel geval | Fragment van .htaccess | Waarom? |
| Landingpagina die elk uur wordt bijgewerkt | max-age=600, s-maxage=1200 | Bezoekers krijgen gegevens die “bijna live” zijn zonder PHP te overbelasten |
| Versiebeheerde CSS/JS | max-age=31536000, immutable | Vrijwel geen verkeer op de server, directe laadtijd |
| Productafbeeldingen voor e-commerce | max-age=604800 | Verlaagt de TTFB, versnelt de catalogus |
| Backoffice / wp-admin | no-store, private | Voorkomt dat gevoelige gegevens in de gedeelde cache terechtkomen |
Vanaf uw hosting (PHP-script van uw site, Cron-taak of SSH-terminal) vereist het legen van de Varnish-cache geen enkel 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 geweigerd
curl_close($ch);Een compleet script, klaar voor een Cron-taak, wordt aangeboden in de hulp De snelheid van uw site versnellen met Fastest Cache. U kunt de cache ook legen vanuit uw paneel, met de knop « Cache legen » van Fastest Cache.
curl -I https://exemple.com/style.cssKijk naar:
Met Chrome/Edge: DevTools > Network > Disable cache kan een eerste bezoeker simuleren.
✅ Uw Varnish-cache staat nu onder controle!
Stel ze aan het LWS-team en de community. Het antwoord wordt na moderatie gepubliceerd.