HTTP 304 ist nicht alles – Advanced Caching mit mod_expires

Mit HTTP 304 kann die Bandbreite und der Webserver erheblich geschont werden, jedoch fällt hier immer noch ein Request an, welcher vom Webserver verarbeitet werden muss. Die billigste Lösung wäre, wenn erst gar keine Anfrage vom Client erfolgen würde, weil diese die Daten bereits hat.

Jeder Browser legt automatisch jede Datei im lokalen Cache ab, jedoch wird eine Datei ein zweites mal benötigt, wird der Server kontaktiert und ermittelt, ob die Datei sich verändert hat. Die Datei wird erst aus dem Cache verwendet, wenn der Server ein “HTTP 304 Not Modified” liefert. Im anderen Fall wird diese vom Server erneut geladen.

Ob ein Browser die Anfrage startet, hängt davon ab, ob im HTTP Header der jeweiligen Datei Cache Informationen vorhanden sind. Mit PHP lässt sich das ziemlich einfach steuern. Im folgenden Beispiel verfällt die Datei quasi im Cache des Browser nicht.

header('Expires: Thu, 01 Jan 2034 01:00:00 GMT');

Bei dynamischen Content, die bspw. mit PHP erzeugt werden, gestalltet sich die Sache etwas schwierig und sollte genaustens überlegt sein. Bei statischen Content wie Bildern kann hier leicht das Apache Module “mod_expires” verwendet werden, welche die Last auf dem Server erheblich mindert.

ExpiresActive  On
ExpiresDefault "access plus 2 minutes"
ExpiresByType  image/png  "access plus 2 days"
ExpiresByType  text/html  "modification plus 5 minutes"

Die Dokumentation von “mod_expires” befindet sich unter:

http://httpd.apache.org/docs/2.2/mod/mod_expires.html

Kategorie: