murattunalı.

Cache-Header.

Ein Cache-Header ist der Antwortheader des Servers, der dem Browser mitteilt, wie lange eine Ressource gespeichert werden darf und wie sie erneut geprüft wird.

Die Grundspannung passt in einen Satz: Ein langer Cache ist schnell, aber Aktualisierungen verbreiten sich nicht; ein kurzer Cache ist aktuell, aber langsam. Die meisten Teams wählen einen Wert in der Mitte und nehmen beide Nachteile zugleich in Kauf.

Die Lösung, die die Spannung auflöst, ist ein Inhaltsstempel: Die Adresse der Ressource trägt einen aus ihrem Inhalt abgeleiteten Stempel. Ändert sich der Inhalt, ändert sich die Adresse — die Cache-Dauer lässt sich daher auf bis zu einem Jahr setzen.

Dass der Stempel aus dem Inhalt stammt, ist entscheidend. Wird eine zufällige Versionsnummer oder die Build-Zeit verwendet, ändert sich die Adresse bei jeder Auslieferung, obwohl der Inhalt gleich blieb — und der Cache läuft leer.

  1. Gestempelte Stile und Skripte — sehr lange Dauer, als unveränderlich markiert.
  2. HTML-Seiten — kurz oder mit erneuter Prüfung; die Adresse muss dauerhaft sein und lässt sich nicht stempeln.
  3. Schriften — sehr lange; sie ändern sich selten.
  4. Sitemap und robots — kurz; sie können häufig aktualisiert werden.

Die Markierung „unveränderlich“ bringt einen zusätzlichen Gewinn: Sie sagt dem Browser, dass die Ressource nicht einmal erneut geprüft werden muss. Ohne sie kann beim Neuladen eine Prüfanfrage hinausgehen; mit ihr unterbleibt diese Anfrage ganz.

Diese Markierung gehört nur an gestempelte Ressourcen. Eine Ressource mit fester Adresse als unveränderlich zu kennzeichnen verhindert jede Verbreitung von Aktualisierungen.

Fehlkonfiguration hat zwei klassische Formen. Die erste ist, gar keinen Cache zu setzen: Bei jedem Besuch lädt jede Ressource erneut, und der Vorteil des Wiederbesuchs entfällt vollständig. Die zweite ist, einer ungestempelten Ressource einen langen Cache zu geben: Die Aktualisierung verbreitet sich nicht, und die Nutzerin sieht weiterhin die alte Fassung.

Die zweite ist besonders heimtückisch, weil sie nur bei Nutzenden auftritt, die die Website schon einmal besucht haben. Die Entwicklerin testet im privaten Fenster, alles sieht richtig aus — und echte Nutzende sehen eine kaputte Seite.

Auch dass die Politik an einer einzigen Stelle definiert ist, zählt: Über mehrere Ebenen verstreute Definitionen laufen mit der Zeit auseinander, und es wird unklar, welche gewinnt.

Um zu prüfen, ob die Politik greift, öffnet man im Netzwerkbereich des Browsers eine Seite zweimal: Beim zweiten Mal dürfen die gestempelten Ressourcen gar nicht angefragt werden. Erscheint eine Anfrage, fehlt entweder der Stempel oder der Header ist falsch geschrieben.

Eine letzte Anmerkung zum Umfang: Die Politik gehört nicht nur für statische Ressourcen definiert, sondern auch für die Seiten selbst. Bei einer Seite ohne Header wendet der Browser eigene Heuristiken an, und das Ergebnis wird unvorhersehbar — in manchen Browsern zwischengespeichert, in anderen nicht.

QUELLEN