Performance-Optimierung durch clientseitiges HTTP-Caching
Schneller, höher, weiter: Langsame Websites haben, zumindest theoretisch, längst ausgedient. Schwache Responsezeiten und zäher Seitenaufbau verleiten zum sofortigen Wegklicken. Im Rahmen der Performance-Optimierung dreht sich vieles um die Cache-Funktionen. Auf Client-Seite findet sich häufig einiges an Raum zur Verbesserung. Dieser wird durch Cache-Control von HTTP-Headern optimal genutzt.
Warum Browser-Cache?
Jeder Browser speichert von einer Website abgerufene Ressourcen für eine gewisse Zeit im eigenen Cache zwischen. Beim erneuten Abruf überprüft der Browser zunächst, ob diese noch lokal abgespeichert sind, bevor es zu einem erneuten Download kommt. Das spart Zeit und Volumen, verkürzt die Abrufzeiten. Natürlich funktioniert dies nur, wenn userseitig ausreichend Platz zum Zwischenspeichern freigegeben wird, wenn nach einer Cache-Entleerung alle Inhalte erneut geladen werden müssen und wenn gecachte Inhalte veraltet sind. Deswegen will im Vorfeld eine sinnvolle Caching-Control-Strategie entwickelt werden.
Cachen oder nicht cachen?
Jeder Browser verfügt über gewisse Caching-Grundregeln, die weitestgehend ident sein sollten, unabhängig vom Hersteller. Dazu zählen:
- Ermöglichte Zwischenspeicherung von GET-Responses mit bestimmten Status-Codes (u.a. 200, 301 und 410)
- Kein Caching bei Serverantwort „no-store“ oder „no-cache“
- Unterstützung von Funktion „Cache-Control: public“, um standardmäßig nicht abzuspeichernde Ressourcen in den Cache aufnehmen zu können
Beim Abgleich zwischen Browser-Cache und Server-Kommandos kann somit festgehalten werden, welche Ressourcen aus dem Cache zu laden sind, welche vom Server abzurufen wären und wo eine Revalidierung anzusetzen hätte.
Verfallsdatum und Revalidierung
Ressourcen aus dem Browsercache dürfen nur verwendet werden, solange diese „frisch“ sind. Durch entsprechende Serveranweisungen können Ablaufdaten bzw. Zeitspannen definiert werden, die einen erneuten Serverabruf erfordern. Solche Zeitspannen werden in Sekunden angegeben. Die Server-Cache-Anweisung „max-age=3600“ würde einen Ablauf der gecachten Ressource nach einer Stunde definieren. Per Revalidierung überprüft der Client nun, ob sich die Serverressource geändert hat. Durch serverseitige Validierungstoken und Zeitstempel erkennt der Browser, ob die Cache-Ressource noch gültig ist oder ob eine veränderte Version abzurufen wäre.
Caching per Proxy
Clientseitiges Caching geht allerdings weit über den reinen, lokalen User-Cache hinaus, denn zwischen Browser und Server befinden sich häufig verschiedene weitere Cache-Instanzen in Gestalt diverser Proxy-Server. Anfragen durchlaufen somit mehrere Cache-Ebenen, bevor die gewünschte Verbindung besteht und eine Erfüllung möglich ist. Auf diese Weise können bestimmte Anfragen verarbeitet werden, selbst wenn der eigentliche Server gerade nicht erreichbar sein sollte. Für den Proxy-Cache lassen sich ebenfalls verschiedene Anweisungen vergeben, die beispielsweise ein alleiniges Cachen durch den Browser, nicht aber durch den Proxy erlauben.
Was sich etwas kompliziert liest, muss keine Hexerei sein. Die pinzweb Werbeagentur übernimmt die komplette Performance-Optimierung Ihrer Website und findet die ideale Caching-Lösung für Sie. Gerne erläutern wir entsprechende Strategien im Rahmen eines kostenlosen Beratungsgesprächs!