Cache-Probleme mit Expires-Headern

Für diverse Inhaltstypen (bspw. "reines" HTML, JavaScript, CSS) ist es sinnvoll, einen so genannten "Expires"-HTTP-Header zu setzen. Diese Kopfzeile wird vom Server an den Browser vor dem eigentlichen Inhalt übertragen und legt fest, wie lange diese Datei gültig ist und im Browser-Cache gehalten werden kann. Die Datei einige Zeit im Browser-Cache zu halten ist eine gute Idee, weil es die Ladezeiten wesentlich verkürzt und wird auch z.B. von Google PageSpeed und diversen anderen Optimierungshilfen empfohlen. Wir haben daher ein paar sinnvolle Standard-Werte in der Server-Konfiguration angegeben (für bestimmte Dateitypen Caching für 7 Tage aktivieren).

Das kann aber störend sein, wenn Du z.B. eine reine HTML-Webseite hast, die Du regelmäßig änderst oder wenn Du bei Deinem selbstgebauten PHP-Script nicht an das Setzen von Pragma, Cache-Control oder Expires-Header gedacht hast.

Seite ohne Cache neu laden (empfohlen)

Im Normalfall sollte das "Problem" so umgegangen werden: da dieses Verhalten genau das ist, was man in 99% der Zeit explizit haben möchte (aus oben erwähnten Gründen), sollte man dieses Verhalten nicht auf Dauer abschalten. Wenn Du frisch neue Dateien hochgeladen hast und diese beim Reload im Browser nicht angezeigt werden hilft ein "Force Reload", bei dem der Browser den Cache ignoriert. Die Tastenkombination dafür ist:

  • Google Chrome: Strg + F5 oder Strg gedrückt halten und auf den Reload-Button klicken
  • Mozilla Firefox: Strg + Shift + R oder Shift gedrückt halten und auf den Reload-Button klicken
  • Safari: Shift gedrückt halten und auf den Reload-Button klicken
  • Opera: Strg + F5 oder Shift gedrückt halten und auf den Reload-Button klicken
  • Internet Explorer: Strg + F5 oder Strg gedrückt halten und auf den Reload-Button klicken

Diese Methode hat allerdings den Nachteil, dass Besucher, welche die Webseite z.B. in den letzten 7 Tagen schon einmal besucht haben, unter Umständen die alte Version der Webseite sehen. Der Browser fragt allerdings regelmäßig beim Server nach, ob eine neuere Version der Seite vorhanden ist und bekommt dann die Info "Keine Änderung" (HTTP: 304 Not Modified) oder der Server schickt die neue Seite. Wann und wie häufig das passiert liegt allerdings in der Hand und Verantwortung des Browser-Herstellers.

Caching abschalten (nicht empfohlen)

Wenn Du das wirklich aus irgendeinem Grund nicht möchtest gibt es folgende Möglichkeit für eine dauerhafte Deaktivierung auf Kosten der Ladezeit der Webseite (und ggf. Abstrafung durch Google):

Um das Browser-Caching ganz zu deaktivieren lege eine neue .htaccess-Datei an oder bearbeitest die bestehende Datei. Füge folgende Zeile (als separate Zeile) hinzu:

ExpiresActive off

Damit werden für dieses Verzeichnis und alle Unterverzeichnisse unsere Standards deaktiviert und der Browser lädt nun alle Dateien jedes Mal vom Server. Wenn Du noch solche Dateien im Browser-Cache hast, muss dieser geleert werden. Das ist deshalb nötig, weil der Browser die Inhalte, die schon im Cache sind, innerhalb der Cache-Laufzeit nicht noch einmal vom Server abruft und deshalb nicht weiß, dass sich die Einstellungen zum Cache-Ablauf geändert haben.