Der TYPO3 Cache

Letzte Änderung:

Um die Ladezeiten möglichst kurz zu halten und die Serverauslastung zu schonen, bedient sich TYPO3 eines leistungsstarken Cache-Konzeptes. Dies gilt sowohl für das Front- als auch das Backend. Caching spielt also sowohl für die User Experience, die Suchmaschinenoptimierung als auch die Redakteursarbeit -und akzeptanz eine wichtige Rolle.

Caching bedeutet in diesem Zusammenhang:

  1. Seiten werden nicht bei jedem Aufruf (zeit-)aufwändig durch zahlreiche Datenbankabfragen dynamisch zusammengestellt. Stattdessen werden Sie i.d.R. als "Ganzes" standardmäßig in einer Datenbank-Tabelle vorgehalten und - wenn keine redaktionellen Änderungen gemacht wurden und der Cache nicht gelöscht wurde - sofort ausgeliefert.
  2. Von TYPO3 optimierte Bilder (angepasste Dimensionen bzw. komprimiert) werden ebenfalls solange vorgehalten bis sie redaktionell ausgetauscht werden. Sie werden als Dateien im Unterverzeichnis typo3temp bereitgestellt.

Beispiel: Für den Aufruf dieser Seite OHNE Cache müssen 38 Datenbank-Abfragen durchgeführt werden (Ausschnitt aus dem Admin-Panel):

Der Frontendcache

Der Frontend-Cache kümmert sich um das Caching der Webseiten:

  • standardmäßig wird eine Seite 24 Std. gecacht (einstellbar in Sekunden über config.cache_period)
  • wenn in der pages-Tabelle im Feld "cache_timeout" ein Wert größer 0 steht, überschreibt dieser die config.cache_period
  • es werden alle Inhalte einer Seite inkl. Query-String, Benutzer + Gruppe + PlugIn-Inhalte gecacht
  • gecacht wird vorwiegend in der Datenbank, Ausnahme z.B. generierte Grafiken
  • mit COA_INT und USER_INT können Seitenbreiche vom Caching ausgeschlossen werden
  • der no_cache-Parameter kann auch im Installtool aktiviert werden ("disableNoCacheParameter")
  • der cHash-Paraemter wird verwendet, um die Parameter eines PlugIns zu verschlüsselten. Dadurch werden nur gültige URLs gecacht und Denial-Of-Service-Attacken vermieden (z.B. durch willkürliches Anhängen von Parametern)
  • mit "Route-Enhancern" können sprechnede URLs generiert werden (der cHash-Parameter verschwindet dann aus der URL)

Cache löschen

Cache von Einzelseiten löschen

In den allermeisten Fällen müssen Sie den Cache nur für eine Seite löschen (das Löschen aller Caches wie weiter unten beschrieben sollte möglichst vermieden werden). Suchen Sie hierzu im Seitenbaum die gewünschte Seite aus und klicken Sie auf das Dokumentsymbol. Im erscheinenden Kontextmenü wählen Sie dann "Clear cache for this page":

Manuelle Löschung des TYPO3 Cache

Sie können den Cache manuell durch das Pfeilsymbol oben rechts im Backend löschen:

Sollten Sie das Blitzsymbol im Backend nicht sehen, müssen vorher die entsprechenden Berechtigungen für TYPO3 Redakteure zur Cache-Löschung  eingestellt werden.

Sie können auch manuell sämtliche gecachten Bilder löschen, in dem Sie sämtliche Inhalte des Unterverzeichnisses "typo3temp" direkt (ftp-/ssh-Zugang zum Webspace erforderlich) entfernen. In diesem muss aber zwingend danach auch der TYPO3-Frontendcache(s.o.) gelöscht werden.

Eine weitere Möglichkeit zum Löschen des Cache bietet das Installtool:

  • unter "Flush TYPO3 an PHP Cache" werden sämtliche systemrelevanten Caches gelöscht (entsprocht "Flush all caches" unter dem Blitzsymbol im Backend). Dies ist die am weitesten gehende Cache-Funktion und wird in erster Linie für Entwickler benötigt.
  • unter "Remove temporary assets" werden alle gecachten Dateien gelöscht

Nach dem serverseitigen Löschen der Caches achten Sie auch darauf, den Cache Ihres Browser vor erneutem Seitenaufruf zu löschen (z.B. mit der Tasenkombination <Strg><F5>).

Zu guter Letzt besteht auch die Möglichkeit, die Caches über die Command Line ("CLI", also außerhalb von Backend & Installtool) zu löschen:

 

./typo3/sysext/core/bin/typo3 cache:flush [--group <all|system|pages|...¦>]

 

all = Alle Caches, system = Systemcaches, pages = Frontendseiten

Automatisierte Löschung der Caches

Wie bereits erwähnt, wird der Seiten-Cache standardmäßig alle 24 Std, automatisch gelöscht.

Für andere Ressourcen(Dateien, Backend, etc.) ist der scheduler die richtige Anlaufstelle:

  • der scheduler-Task Caching framework garbage collection entfernt diverse Backend-Caches, die nicht automatisch gelöscht werden
  • für das Löschen von Dateien im Cache gibt es keinen Standrda-Task im scheduler. Ein regelmäßiges Löschen macht auch wenig Sinn, da die Neuerstellung z.B. von Bildern sehr ressourcenaufwändig ist.

Über den oben erwähnten CLI-Befehl kann man über den cronjob gezielt automatisierte Löschungen vornehmen.

Cache warm up

Der Cache warm up, dient dazu, die Cache initial zu füllen. Damit soll vermieden werden, das die Erst-Besucher nach einer Cachelöschung hohe Ladezeiten in Kaufnehmen müssen.

Ein mögliches Szenario ist das Einspielen einer neuen TYPO3 Version in ein anderes Webverzeichnis.

Der CLI-Befehl zum Cache warm up lautet:

 

cache:warmup [--group <all|system|di>]

 

Allerdings ist es aktuell nicht (bzw. nur durch Extensions) möglich, den Frontend-Cache zu initialisieren.

Browsercache-Einstellungen

TYPO3 liefert standardmäßig eine Konfigurationsdatei für Webserver (z.B. ".htaccess" für Apache-Server), die Anweisungen für clientseitiges Caching beinhalten. Hier erhalten also die Browser der User Informationen, wie Sie auf dem lokalen System das Caching für einzelne Dateitypen handhaben können.

So gelten z.B. folgende Standardregeln:

  • html-, JSON und XML-Code sollte gar nicht gecacht werden
  • Fonts, Bilder-, Audio- und Videodateien sollen einen Monat gecacht werden
  • RSS-Feeds sollen 1 Std. gecacht werden
  • CSS-Dateien sollen 1 Jahr im Cache verbleiben

Die Einstellungen sind nach der Installation selbsverständlich nach Belieben änderbar.