Statische Dateien zu cachen ist die billigste Geschwindigkeit überhaupt: Der Browser fragt gar nicht erst. Das Risiko ist das umgekehrte — ein Stylesheet, ein Jahr lang zwischengespeichert, das Sie dann ändern müssen, auf einem Rechner, an den Sie nicht herankommen.
Die Regel, die langes Caching sicher macht
Cachen Sie aggressiv NUR Dateien, deren Name sich mit ihrem Inhalt ändert. Dann ist eine Änderung ein neuer Name, der alte Cache belanglos, und kein Besucher hält je die falsche Datei in Händen.
/css/site.a1b2c3.css <- safe to cache for a year
/css/site.css?v=1788541047 <- the same idea, from the file mtime
Was setzen
location ~* \.(css|js|woff2|jpg|png|webp|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location ~* \.(html|php)$ {
add_header Cache-Control "no-cache";
}
immutable sagt dem Browser, nicht einmal nachzufragen. no-cache auf HTML bedeutet nicht „nicht cachen“, sondern „frag vorher bei mir nach“ — und das ist genau richtig für eine Seite, deren Inhalt sich ändert, ohne dass sich ihre Adresse ändert.
Prüfen, was Sie senden
curl -sI https://yourdomain.com/css/site.css | grep -iE "cache-control|expires|etag"
ETag und Last-Modified
Diese machen die NACHFRAGE billig, statt die Anfrage überflüssig: Der Browser fragt, der Server antwortet 304 Not Modified, und es wird kein Inhalt gesendet. Gut für HTML — und bei Assets die zweitbeste Lösung nach dem Gar-nicht-Fragen.