Caching: Bessere Performance
Schnell ladende Seiten sind wichtig - dabei kommt es entscheidend auch auf die richtige Caching-Strategie an: damit nicht geänderte Dateien nicht unnötig geladen werden müssen.

- Caching: Bessere Performance
- Expires
- Die richtige Strategie
Weit verbreitet sind zwei Meinungen zum Caching: Caching ist schlecht, da man damit die Kontrolle über die eigenen Dokumente abgibt. Caching lässt sich gut über das entsprechende meta-Element im Dokument steuern. Beides stimmt nicht. Denn Caching ist eine ganz wesentliche Technik, um die ...
Weit verbreitet sind zwei Meinungen zum Caching:
- Caching ist schlecht, da man damit die Kontrolle über die eigenen Dokumente abgibt.
- Caching lässt sich gut über das entsprechende meta-Element im Dokument steuern.
Politik der kurzen Wege
Cache bezeichnet laut Wikipedia "einen schnellen Puffer-Speicher, der Zugriffe auf ein langsames Hintergrundmedium nach Möglichkeit vermeidet. Meist werden hierzu Inhalte/Daten gepuffert, die bereits einmal verwendet wurden, um beim nächsten Zugriff schneller zur Verfügung zu stehen".Websites werden hauptsächlich an zwei Stellen gespeichert: im Browser und auf besonderen Servern, den Proxyservern. Im Browser: Den Cache im Browser können Sie sich ansehen und Sie können ihn auch ein- und ausschalten.

Im Firefox geht das folgendermaßen: Wenn Sie about:cache in der Adresszeile eingeben, erhalten Sie einen Überblick über die im Browsercache gespeicherten Dateien. Falls der Cache deaktiviert sein sollte, so lässt er sich aktivieren, indem Sie in der Adresszeile about:config schreiben.Suchen Sie dann nach der Direktive browser.cache.disk.enable. Diese muss den Wert true haben. Außerdem lässt sich der Cache löschen über das Menü Extras/Einstellungen/Erweitert/Netzwerk. Beim Offline-Speicher klicken Sie jetzt löschen an.Auf Proxyservern: Der zweite Cache ist der Speicher auf Proxyservern. Dies sind zwischengeschaltete Server, die üblicherweise bei Internetprovidern zum Einsatz kommen und dafür sorgen, dass häufig benötigte Ressourcen zwischengespeichert und schneller ausgeliefert werden.
Formvollendete Kommunikation
Wie und ob gecacht wird, steuern Sie über HTTP-Header. Die Kommunikation per HTTP zwischen Browser und Server besteht aus einem head- und einem body- Teil. Eine Anfrage des Clients (Browsers) kann beispielsweise so aussehen:
GET / HTTP/1.1
Host: www.example.com
Der Browser fordert (get) eine Internetseite an und gibt gleichzeitig das verstandene Protokoll an. Zusätzlich gibt uns der Browser weitere Informationen, etwa, mit welchen Dokumenten er umgehen kann, die uns hier aber nicht weiter interessieren sollen.Dann kommt die Antwort des Servers. Am Anfang stehen das verwendete Protokoll und eine Statusmeldung:
HTTP/1.1 200 OK
Es folgen Informationen wie verwendeter Server, aktuelles Datum, MIME-Typ und Zeichensatz, die hier ausgelassen sind. Die folgenden vier Angaben hingegen sind für das Caching relevant:
Last-Modified: Tue, 16 Aug 2011
15:39:27 GMT
ETag: "7f01-4aaa12f4ee9c0;89
-3f26bd17a2f00"
Cache-Control: max-age=600
Expires: Wed, 17 Aug 2011 08:30:45
GMT

Last-Modified und ETag sind sogenannte Validatoren, sie helfen zu ermitteln, ob ein gecachtes Dokument noch dem aktuellen Stand entspricht.Cache-Control gibt in Sekunden vor, wie lange ein Dokument gültig ist, Expires macht das ebenfalls, aber in Form eines Verfallsdatums.Nach diesem Header folgt nach einer Leerzeile der Body mit dem Inhalt der Datei. Im Beispiel wird jetzt das Dokument gecacht, und bei allen weiteren Aufrufen der Seite vor dem Ablaufzeitpunkt kann das Dokument aus dem Cache geladen werden: ohne Wartezeit, ohne Serverlast, direkt und sehr schnell ausgeliefert.
Gibt's was Neues?
Nach Ablauf des Zeitpunkts setzt der Browser ein so genanntes Conditional GET ab. Das sieht - reduziert auf die relevanten Header - folgendermaßen aus:
GET / HTTP/1.1
Host: www.example.com
If-Modified-Since: Tue, 16 Aug 2011
15:39:27 GMT
If-None-Match: "7f01-4
aaa12f4ee9c0;89-3f26bd17a2f00"
Bei If-Modified-Since steht das in der gecachten Ressource bei Last-Modified angegebene Datum. Mit If-None-Match wird die vorher beim ETag angegebene Zeichenkombination verglichen.Die Antwort des Servers kann jetzt unterschiedlich ausfallen: Wenn es keine Änderungen gibt, sendet er:
HTTP/1.1 304 Not Modified
Ansonsten sendet er den normalen 200-Statuscode und im Body der Antwort das angeforderte Dokument.