Menü

Server-seitiges Caching und dynamische Inhalte

Für alle technisch Interessierten hier ein Exkurs zu einem speziellen Thema: serverseitiges Caching von Typo3-Seiten und mögliche Probleme mit dynamischen Inhalten. Muss nicht im Detail verstanden werden, aber wenn eine geänderte Seite partout weiterhin in der alten Version erscheint, kann man hier nachschauen, was zu tun ist.

Wenn man an einem Termin oder an einer News nachträglich was ändert und sich das Ergebnis im Frontend anschauen will, erscheint die Änderung möglicherweise nicht! Das liegt daran, dass der Server Seiten, die seit ihrer letzten Änderung bereits mal von irgendwem im Frontend abgerufen worden sind, in einem schnellen Zwischenspeicher (Cache) vorhält und sie beim nächsten Abruf aus dem Cache lädt, anstatt sie erneut aus der Datenbank zusammenzubasteln. Mit dem Browsercache beim User hat das nichts zu tun, d. h. mit Strg+F5 kann man die Seite zwar komplett neu vom Server abrufen, der liefert aber wieder die Version in seinem eigenen Cache. Man kann den Server zwingen, die Seite neu zu erzeugen, indem man an die URL den PHP-Parameter "no_cache=1" anhängt, also z. B.
http://www.attac-muenchen.org/termine/?no_cache=1

Das ? bedeutet, dass der folgende Text nicht mehr zum Seitennamen gehört, sondern als Parameter an die Seite übergeben wird. Wenn die URL bereits Parameter enthält, muss man den zusätzlichen Parameter mit einem & hinten anhängen, z. B.
www.attac-muenchen.org/termine/?irgendwas&nochwas&no_cache=1

Man muss im Backend für Seiten, die nicht gecacht werden sollen, bei den Seiteneigenschaften die Option "Nicht cachen" einschalten, dann hängt Typo3 bei allen internen Links auf diese Seiten automatisch den no_cache-Parameter an. Das sieht man z. B., wenn man im Menü oder über den folgenden Link die Seite Termine aufruft. Diese Option sollte nur gesetzt werden, wenn sich der Inhalt der Seite ändern kann, ohne dass die Seite selbst modifiziert wurde, also bei allen Seiten, die News und Termine aus der Datenbank ziehen. Für Seiten ohne dynamische Inhalte sollte diese Option deaktiviert bleiben, sonst wird der Abruf unnötig langsam. Typo3 generiert die Seite beim Abruf immer automatisch neu, wenn der Cache veraltet ist, d. h. die Seite selbst seit dem letzten Aufruf geändert wurde. Änderungen an dynamischen Inhalten bekommt die Cache-Verwaltung allerdings nicht mit.

Bei unseren Münchner Seiten ist die Cache-Option entsprechend gesetzt, d. h. für alle Seiten mit News- oder Kalender-Plugin ist der Cache ausgeschaltet. Bei den bundesweiten Seiten ist der Cache jedoch immer eingeschaltet. Vermutlich aus Performance-Gründen; die bundesweite Terminseite wird deutlich schneller geladen als unsere. Ich vermute, dass auf dem Server stattdessen ein Skript läuft, das den Cache für die entsprechenden Seiten regelmäßig aktualisiert.

Wenn auf den bundesweiten Seiten Münchner Termine oder News stehen und wir was an diesen ändern, erscheinen diese Änderungen bei uns sofort, auf den bundesweiten Seiten jedoch nicht bzw. erst nach einer gewissen Zeit. Erst wenn man die bundesweite Seite manuell mit no_cache=1 abruft, wird sie neu erzeugt und die Änderungen sind da.