Seite wählen

Serie High Performance Websites – Teil 3: Cachen erlaubt !

von | Apr 14, 2009 | Serien

Nachdem im vorherigen Teil die HTTP-Requests auf ein minimum reduziert wurden ist es nun an der Zeit den Client das zwischenspeichern von Inhalten auf eine besitmmte Zeit hin zu erlauben.
Hierfür werden sog. Expires-Header serverseitig konfiguriert. Die dadurch in den HTTP-Response gesetzten  „Expires“ und „Cache-Control“ Header werden bei der Auslieferung jedes Contentelements übertragen. Definiert wird der Expires-Header auf Basis von Dateinamen oder Pfaden in der abgerufenen URL. Um die Expires in Apache nutzen zu können muss mod_expires aktiviert sein.
Für Lighttpd ist eine passende Anleitung unter https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_expire zu finden.
Zusätzlich ist es notwendig in der Konfiguration des entsprechenden VirtualHost’s folgende definitionen vorzunehmen:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 10 years"
ExpiresByType image/jpeg "access plus 10 years"
ExpiresByType image/png "access plus 10 years"
ExpiresByType text/css "access plus 2 years"
ExpiresByType text/js "access plus 2 years"
ExpiresByType text/javascript "access plus 2 years"
ExpiresByType application/javascript "access plus 2 years"
ExpiresByType application/x-javascript "access plus 2 years"
</IfModule>

Hier wird für die genannten Elemente jeweils eine Ablaufzeit von 10 bzw. 2 Jahren definiert, was den anfragenden Browser dazu bringt das geladene Element für 10 bzw. 2 Jahre im Browsercache zu halten und nicht erneut abzufragen.
Zusätzlich kann noch ein genereller Expire mittels
ExpiresDefault ”access plus 1 days”

gesetzt werden.
Durch dieses Verhalten ergibt sich allerdings ein neues Problem, beispielsweise kann es sein das sich innerhalb dieser 2 Jahre das Stylesheet verändert. In diesem Fall würde der Browser das veränderte CSS durch die ihm Bekannte „Cache-Halbwertszeit“ von 2 Jahren nicht neu laden und die Änderung würde nicht angezeigt. Um dieses Problem zu verhindert sollte eine Versionierung der „halbstatischen“ Elemente durchgeführt werden, aus „style.css“ wird so „style-20090101-001.css“.
Ändert sich nun das Stylesheet auf „style-20090101-002.css“ wird der Sourcecode der HTML Seite um den Namen des CSS angepasst und der Browser läd automatisiert die neue Version da ihm das „neue“ Inhaltselement nicht im Cache bekannt ist.

1 Kommentar

  1. Peter Magsam

    Hallo Michael,
    Deine Empfehlungen über die Performance vom Apache Webserver – Cachen erlaubt – haben mir Hoffnungen gemacht, dass Du vielleicht für glassfish entsprechende Empfehlungen geben kannst. Ich habe eine sehr umfangreiche – ca. 120 Dialoge – Open Source Lösung für den Handel entwickelt. Hier kannst Du Dich informieren http://www.ka-und-we.de .
    Von Webservern habe ich nicht die große Ahnung. Vielleicht kannst Du mir weiterhelfen damit die Performance stimmt.
    Ich wohne in der Nähe von Nürnberg in der Fränkischen Schweiz (Gößweinstein).
    Grüße nach Nürnberg
    Peter

    Antworten

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Serien