HTTP-Caching
HTTP-Caching, oder kurz Caching, ist eine Methode zur Steigerung der Performance von Webseiten.
Durch den Einsatz eines Zwischenspeichers (Cache) können unnötige Serveranfragen und Datenübertragungen vermieden werden. Dies verringert die Zugriffszeiten und verbessert somit die Performance der Webseite. Das Zwischenspeichern ist an mehreren Stellen des Übertragungswegs möglich, beispielsweise im Client (Browser) des Nutzers, oder auch in einem Content Delivery Network (CDN), das speziell zu diesem Zweck betrieben wird.
Arten der Speicherung
Manche Daten sind langfristig und öffentlich verfügbarbar, während sich andere schnell ändern oder nur für bestimmte Personen sichtbar sein dürfen. Beispielsweise ist der Warenkorb eines Online-Shops für jeden Kunden unterschiedlich und somit nicht cachebar. Ein Firmenlogo ist dagegen für alle Kunden gleich ist und ändert sich selten. Daher ist es für öffentliches Caching geeignet.
Eine Kennzeichnung der Daten informiert den Cache darüber, ob und auf welche Weise Daten zwischengespeichert werden können. Neben der Unterscheidung öffentlicher und privater Daten kann eine Gültigkeitsdauer angegeben werden, nach deren Ablauf Daten validiert und ggf. erneut vom Origin-Server angefordert werden müssen. Zudem besteht die Möglichkeit, das Zwischenspeichern bestimmter Daten gänzlich zu verbieten.
Cache-Control-Header
Der HTTP-Header Cache-Control
ermöglicht diese Kennzeichnung unter anderem mithilfe der folgenden Angaben.
Die Angabe public
kennzeichnet Daten, die von jedem Cache zwischengespeichert werden dürfen.
Cache-Control: public
Als private
gekennzeichnete Daten dürfen nicht öffentlich zwischengespeichert werden. Ein privater Cache, beispielsweise der im Browser eingebaute, darf die Daten speichern.
Cache-Control: private
Die Angabe no-cache
erfordert eine Anfrage an den Origin-Server, um die Gültigkeit gespeicherter Daten zu validieren, bevor diese an den Client gesendet werden. Wurde hier keine Modifikation des Inhalts festgestellt, darf der Cache erneut für die in max-age angegebene Zeit verwendet werden. Dies spart zwar nicht die Anfrage an den Server, jedoch in den meisten Fällen die Notwendigkeit einer erneuten Übertragung.
Cache-Control: no-cache
Die Angabe max-age
spezifiziert die maximale Zeitdauer in Sekunden, die eine Ressource als aktuell betrachtet wird. Das folgende Beispiel gibt eine Gültigkeit von einer Stunde an.
Cache-Control: max-age=3600