Was ist Cache-Steuerung? | So funktioniert Caching

Die Cache-Steuerung bestimmt das Caching-Verhalten einer Website und steuert, wie oft lokal gespeicherte Ressourcen im Browser aktualisiert werden.

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Cache-Steuerung definieren
  • Browser-Caching beschreiben
  • Einige Direktiven zur Cache-Steuerung skizzieren

Ähnliche Inhalte


Möchten Sie noch mehr erfahren?

Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!

Lesen Sie die Cloudflare Datenschutzrichtlinie, um zu erfahren, wie wir Ihre persönlichen Daten sammeln und verarbeiten.

Link zum Artikel kopieren

Was ist Cache-Steuerung?

Cache-Steuerung („cache-control“) ist ein HTTP-Header, der das Caching-Verhalten des Browsers bestimmt. Einfach ausgedrückt, wenn jemand eine Website besucht, speichert sein Browser bestimmte Ressourcen wie Bilder und Website-Daten in einem Speicher, der Cache genannt wird. Wenn dieser Benutzer dieselbe Website erneut besucht, bestimmt die Cache-Steuerung die Regeln dafür, ob bei dem Benutzer diese Ressourcen aus seinem lokalen Cache geladen werden sollen oder ob der Browser die Ressourcen neu beim Server abrufen muss. Wenn man Cache-Steuerung genau verstehen möchte, muss man die Grundlagen von Browser-Caching und HTTP-Headern kennen.

Was ist Browser-Caching?

Wie oben erläutert, werden beim Browser-Caching Website-Ressourcen gespeichert, sodass diese nicht erneut von einem Server abgerufen werden müssen. So kann etwa das Hintergrundbild einer Website lokal im Cache gespeichert werden. Wenn ein Benutzer diese Seite zum zweiten Mal besucht, wird das Bild aus den lokalen Dateien des Benutzers geladen und die Seite wird viel schneller aufgebaut.

Browser speichern diese Ressourcen nur für einen bestimmten Zeitraum, der als Time To Live (TTL) bezeichnet wird (Gültigkeitsdauer). Wenn ein Benutzer eine gecachte Ressource nach Ablauf der TTL wieder anfordert, muss der Browser erneut auf den Server zugreifen und eine neue Kopie der Ressource herunterladen. Woher kennen Browser und Webserver die TTL für jede Ressource? An dieser Stelle kommen HTTP-Header ins Spiel.

Was sind HTTP-Header?

Im Hypertext Transfer Protocol (HTTP) ist die Syntax für die Kommunikation im World Wide Web beschrieben. Diese Kommunikation besteht aus Anfragen von Clients an Server und Antworten von Servern an Clients. Zu diesen HTTP-Anfragen und -Antworten gehört jeweils eine Reihe von Schlüssel-Wert-Paaren, die als Header bezeichnet werden.

Diese Header enthalten viele wichtige Informationen zu jeder Nachricht. So enthält etwa ein Anfrageheader normalerweise dies:

  1. Informationen darüber, welche Ressource angefordert wird
  2. Angaben zum Browser, den der Client verwendet
  3. Angaben zu den Datenformaten, die der Client akzeptiert

Antwort-Header enthalten häufig diese Informationen:

  1. Ob die Anfrage erfolgreich erfüllt wurde oder nicht
  2. Sprache und Format aller Ressourcen im Hauptteil der Antwort

Ein Cache-Control-Header kann sowohl in HTTP-Anfragen als auch in Antworten vorkommen.

Was enthält ein Cache-Control-Header?

Header bestehen aus Schlüssel-Wert-Paaren, getrennt durch einen Doppelpunkt. Bei der Cache-Steuerung lautet der Schlüssel, der Teil links vom Doppelpunkt, immer „cache-control“. Der Wert steht rechts neben dem Doppelpunkt. Dabei kann es sich um einen oder mehrere durch Kommas getrennte Werte für die Cache-Steuerung handeln.

Beispiel Cache-Control-Header

Diese Werte werden als Direktiven bezeichnet und bestimmen, wer eine Ressource zwischenspeichern kann und wie lange diese Ressourcen im Cache gespeichert werden können, bevor sie aktualisiert werden müssen. Gehen wir einmal einige der gängigsten Anweisungen zur Cache-Steuerung durch:

cache-control: private

Eine Antwort mit der Direktive „private“ kann nur vom Client im Cache gespeichert werden und niemals von einem zwischengeschalteten Agenten wie einem CDN oder Proxy. Hierbei handelt es sich häufig um Ressourcen, die private Daten enthalten, z. B. eine Website, auf der personenbezogene Informationen eines Benutzers angezeigt werden.

cache-control: public

Umgekehrt bedeutet die Direktive „public“, dass die Ressource in jedem Cache gespeichert werden kann.

cache-control: no-store

Eine Antwort mit der Direktive „no-store“ darf niemals irgendwo in einem Cache gespeichert werden. Demzufolge muss jedes Mal, wenn ein Benutzer diese Daten anfordert, eine Anfrage nach einer neuen Kopie an den Ursprungsserver gesendet werden. Diese Direktive ist normalerweise Ressourcen vorbehalten, die äußerst sensible Daten enthalten, z. B. Bankkontodaten.

cache-control: no-cache

Diese Direktive bedeutet, dass im Cache gespeicherte Versionen der angeforderten Ressource erst verwendet werden können, wenn vorher geprüft wurde, ob eine aktuellere Version vorhanden ist. Dies erfolgt normalerweise mit einem „ETag“.

Ein ETag ist ein weiterer HTTP-Header mit einem eindeutigen Token für die Version der Ressource zum Zeitpunkt der Anfrage. Dieses Token wird auf dem Ursprungsserver jedes Mal geändert, wenn die Ressource aktualisiert wird.

Wenn ein Benutzer zu einer Seite zurückkehrt, die eine „no-cache“-Ressource enthält, muss der Client immer eine Verbindung zum Ursprungsserver herstellen und das ETag der Ressource im Cache mit dem auf dem Server vergleichen. Wenn die ETags identisch sind, wird die Ressource aus dem Cache für den Benutzer bereitgestellt. Wenn nicht, bedeutet dies, dass die Ressource geändert wurde und der Client eine neue Version herunterladen muss, um sie für den Benutzer bereitzustellen. Hierdurch ist gewährleistet, dass der Benutzer immer die aktuellste Version dieser Ressource erhält, ohne dass unnötige Downloads erforderlich sind.

cache-control: max-age

Diese Direktive bestimmt die Gültigkeitsdauer (Time to Live), also wie lange (in Sekunden) nach dem Herunterladen eine Ressource aus dem Cache bereitgestellt werden kann. Wenn das maximale Alter beispielsweise auf 1800 festgelegt ist, bedeutet dies, dass innerhalb von 1.800 Sekunden (30 Minuten) nach der ersten Anforderung der Ressource vom Server bei nachfolgenden Anfragen eine im Cache gespeicherte Version dieser Ressource für den Benutzer bereitgestellt wird. Wenn der Benutzer die Ressource nach Ablauf dieser 30 Minuten erneut anfordert, muss der Client eine neue Kopie vom Ursprungsserver anfordern.

cache-control: s-maxage

Die Direktive „s-maxage“ ist speziell für gemeinsam genutzte Caches wie CDNs bestimmt. Sie legt fest, wie lange die Ressource bei solchen gemeinsam genutzten Caches aus dem Cache bereitgestellt werden kann. Diese Direktive setzt die Direktive „max-age“, die für einzelne Clients gilt, außer Kraft.

Warum ist Cache-Steuerung wichtig?

Browser-Caching trägt sehr dazu bei, Ressourcen zu schonen und die Benutzererfahrungen im Internet zu verbessern. Ohne Cache-Steuerung wäre es jedoch sehr unflexibel. Jede Ressource auf jeder Site wäre an dieselben Caching-Regeln gebunden: Sensible Informationen würden genauso wie öffentliche Informationen im Cache gespeichert und Ressourcen, die sich häufig ändern, für dieselbe Zeitspanne zwischengespeichert wie solche, die sich selten ändern.

Cache-Steuerung bietet genau die Flexibilität, die Browser-Caching wirklich nützlich macht. Entwickler können damit bestimmen, wie jede Ressource im Cache gehandhabt wird. Außerdem können Entwickler spezielle Regeln für Vermittler festlegen. Dies ist einer der Gründe dafür, dass Websites mit einem CDN, zum Beispiel dem Cloudflare CDN, tendenziell eine bessere Performance erzielen als Websites, die kein CDN verwenden.