Cache Control bei dynamischen Webauftritten

Mit dem neuen Apache 2.2 haben wir zur Steigerung der Performance das Cache-Modul von Apache aktiviert („Mem Cache“).

Dieses Modul bewirkt, daß Webseiten, darunter auch dynamisch generierte Seiten, vom Webserver zwischengespeichert werden und beim nächsten Request wieder ausgeliefert werden, ohne daß dann die Seite nochmals von vorne „gebaut“ werden muss. Dadurch ergibt sich teilweise ein merkbarer Performancegewinn.
Dem Voraus gingen verschiedene Tests, über die ich im letzten Jahr bereits in diesem Blog berichtete. Vgl: Vorbereitungen zum Umstieg auf den Webcluster: Performance

Leider mussten wir nun feststellen, daß es doch Probleme gibt:  Bei Webangeboten, die verschiedene Inhalte immer vom selben Skript liefern (z.b. immer von einer „index.php“), kann es passieren, daß zunächst der falsche Content geliefert wird und der richtige erst dann kommt, wenn man  die Seite nochmal explizit neu anforderte.

Eine genauere Analyse der Vorgänge zeigte zwei mögliche Ursachen, bzw Lösungen:

  • Das Skript liefert bei der Generierung der Inhalte bislang keine Antwort-Header, die spezielle Cache-Control-Anweisungen beinhalten. So fehlt beispielsweise eine solche Zeile in den Antwort-Headern:

    Cache-Control: no-cache

    Die Lösung wäre also, daß das Skript um diese oder andere Angaben ergänzt wird.
    Bei einigen CMS, wie beispielswiese bei Typo3, gibt es entsprechende Funktionen und auch Extensions, die dies automatisch setzen.

  • Sollte das Problem nicht über eine Anpassung oder Konfiguration der Skripte lösbar sein, besteht ansonsten die Möglichkeit, daß das Caching für den kompletten Webauftritt oder für einzelne Verzeichnisse daraus serverseitig deaktiviert wird.
    Im dem Fall, daß der Webauftritt auf unseren Webcluster liegt, wird dies das Webteam tun. Wir werden dann in der Konfiguration des Webauftritts die Anweisung 

    CacheDisable  /

    ergänzen.
    Im Webmasterportal kann jeder angemeldete Webmaster über die Ansicht der Konfiguration, unter dem Unterpunkt „VirtualHost-Konfiguration“, nachprüfen, ob und welche Direktiven gesetzt sind und ob diese dabei ist.

Sollten Sie hinsichtlich dieses Themas Unterstützung des Webteams benötigen, setzen Sie sich bitte mit uns in Kontakt.