Der Martin: Browser Cache

Beitrag lesen

Hallo Michael,

gibt es eine Seite, wo man gut nachlesen kann, wie Browser Cache funktioniert

das Grundprinzip ist klar: Der Browser legt eine einmal abgerufene Ressource in einem Zwischenspeicher ab, dem Cache (der Ausdruck stammt vom französischen Wort cache für "Versteck"). Bevor er irgendeine Ressource erneut abruft, sieht er erstmal nach, ob er die nicht schon im Cache hat, und holt sie dann eventuell direkt von da. Spart Zeit und Traffic.

Die genauen Details dabei sind stark browserabhängig, und dabei spielen natürlich auch noch die vom Server gegebenen Caching-Empfehlungen per HTTP-Header eine Rolle.

Nun die Frage: Wird der Cache angelegt für die angefragten URLs, oder beachtet der Browser-Cache auch die Werte, die im Header mitgegeben wurden?

Wie stellst du dir das mit dem Header vor? Reden wir tatsächlich von HTTP-Header?

Als Beispiel:

https://zoo.site mit header 'custom-animal', 'tiger'
https://zoo.site mit header 'custom-animal', 'snake'

Es ist unüblich, Angaben im Request-Header mitzusenden, die den Inhalt der angeforderten Ressource steuern sollen. Meinst du anstatt Header vielleicht einfach nur URL-Parameter?

Wenn man Browser Cache nutzen möchte, sollte man dann die Werte in der URL mitgegeben?

Natürlich, wo sonst? Die Frage ist, ob im eigentlichen Pfad oder im Query-String, der üblicherweise mit einem Fragezeichen eingeleitet wird. Bei Query-String-Parametern (URL-Parameter) verhalten sich die Browser teils sehr unterschiedlich, teils sogar von Version zu Version unterschiedlich.

Und vergiss nicht, dass man das Caching-Verhalten des Browsers als Nutzer auch sehr weitgehend über die Browsereinstellungen kontrollieren kann. Ich habe meine Browser beisielsweise so eingestellt, dass sie beim erneuten Abruf einer Ressource in jedem Fall erstmal beim Server anfragen, ob die Version im Cache noch aktuell ist. Dafür sendet der Browser im Request den Header If-Modified-Since mit.
Der Server antwortet darauf entweder mit Status 200 und dem aktuellen, neuen Datenbestand der gefragten Ressource, oder aber mit Status 204 (Not Modified) und leerem Response-Body, um dem Client zu signalisieren: Ja, was du da hast, ist noch aktuell.

Immer eine Handbreit Wasser unterm Kiel
 Martin

--
Wenn ich den See seh, brauch ich kein Meer mehr.