Der Aufruf einer EGOCMS Seite erzeugt auf unterschiedlichen Ebenen eine Cache, welche den wiederholten Aufruf der Seite für den aktuellen oder andere Benutzer beschleunigen kann. Auf dieser Seite werden alle Cache Ebenen erklärt.
Inhaltsverzeichnis
Kurzbeschreibung
In einer umfangreichen EGOCMS Umgebung können 5 Cache Ebenen existieren, die hier aufsteigend genannt werden:
- OPcache: Speichert den kompilierten Bytecode von PHP Skripten im Arbeitsspeicher.
- EGOCMS Cache: Kompilierte Smarty Templates und verarbeitete EGOCMS Bilder.
- Nginx Cache: Die generierte EGOCMS HTML Ausgabe.
- Browser Cache: Die EGOCMS Ausgabe wird im lokalen Browser gespeichert.
- Proxy Cache: Die EGOCMS Ausgabe wird im vorgeschalteten Proxy gespeichert.
Es ist möglich, dass kundenspezifisch noch andere Cache Ebenen existieren oder die 5. Ebene, die Proxy Cache nicht existiert.
Wenn Sie über den EGOCMS Adminbereich die Cache löschen, betrifft das nur die EGOCMS Cache und den Nginx Cache.
OPcache
Die OPcache ist eine PHP Erweiterung und kann optional aktiviert werden. In Standard EGOCMS Installationen ist diese Erweiterung immer aktiviert.
PHP Skripte werden vor der Ausführung kompiliert. Dieser kompilierte Bytecode wird im Arbeitsspeicher abgelegt und wiederverwendet. Das erhöht die allgemeine PHP Performance.
Weitere Informationen zur OPcache finden Sie auf der offiziellen PHP Webseite.
EGOCMS Cache
Das EGOCMS verwendet die Smarty Template Engine für die Generierung von HTML Ausgaben. Der Smarty Code wird dabei in PHP Code kompiliert und das Ergebnis zwischengespeichert.
Das EGOCMS speichert aber auch diverse andere Dinge in den EGOCMS Cache: das sind z.B. Ergebnisse komplexer Funktionen oder die Ausgaben von Bildern.
In diese EGOCMS Cache kann auch kundenspezifisch geschrieben werden. Dafür gibt es zwei Möglichkeiten:
Smarty Cache Block
Verwenden Sie den Smarty Cache Block {cache}
um den umfassten Inhalt zwischenzuspeichern. Dies bietet sich besonders dann an, wenn ein HTML Bestandteil Ihrer Ausgabe länger benötigt, um berechnet zu werden, die Ausgabe aber grundsätzlich auf jeder Seite identisch ist (z.B. eine Navigation).
Site Cache Methoden
Über die Site Methoden setCacheEntry($key, $value)
und getCacheEntry($key)
können Sie für den Mandanten des Site Objekts in die Cache schreiben, bzw. aus der Cache lesen. Dabei gibt der Parameter $key
die Cache Bezeichnung an, die eindeutig gewählt werden sollte, und der Parameter $value
den Cache Inhalt. Der Cache Inhalt wird serialisiert und kann entsprechend unterschiedliche Typen annehmen.
Um zu prüfen, ob ein Cache Eintrag existiert, muss auf null
geprüft werden. Nur so können auch leere Werte wie 0
, false
oder ein leeres Array []
in die Cache geschrieben werden. Beispiel:
$key = 'myCache';
$value = $site->getCacheEntry($key);
if ($value === null) {
$value = 'foobar';
$site->setCacheEntry($key, $value);
}
echo $value;
Die EGOCMS Cache wird standardmäßig auf dem Dateisystem im EGOCMS Installationsverzeichnis unter var/cache/ abgelegt. Die Bilder Cache liegt in var/cachemedia/.
In der globalen Konfigurationsdatei var/conf/conf.ini können Sie site_cache_type="apcu"
setzen, um die Cache (außer die Bilder Cache) stattdessen in die APCu zu speichern. Über den Menüeintrag Hilfe > Info > APC-Info können die gesetzten Cache Einträge verwaltet werden.
Es wird empfohlen für die EGOCMS Cache die APCu zu verwenden.
Nginx Cache
Die Ausgabe kann zusätzlich noch vom Nginx Webserver in eine Cache geschrieben werden. Dies erfordert, dass der Nginx Webserver entsprechend konfiguriert ist.
Die Nginx Cache schreibt die Cache Dateien standardmäßig im EGOCMS Verzeichnis var/cachenginx/.
Über die Netzwerkanalyse des Browser kann geprüft werden, ob eine Ausgabe aus dem Nginx Cache kommt.
Der Nginx Webserver liefert dazu die Antwortkopfzeile X-Cache-nginx
.
HIT
: Die Ausgabe kommt aus dem Nginx Cache.MISS
: Die Ausgabe kommt nicht aus dem Nginx Cache (z.B. weil die EGOCMS Seite so eingestellt ist, dass diese keine Server Cache zulässt).BYPASS
: Ist man im EGOCMS als ein Benutzer angemeldet, wird die Nginx Cache immer ignoriert. Das liegt daran, weil unterschiedliche angemeldete Benutzer unterschiedliche Ausgaben erhalten können (z.B. in Abhängigkeit der Berechtigungen).

In der Netzwerkanalyse der Browserkonsole wird das über die Antwortkopfzeile Cache-Control
mit dem Wert public
(der Browser und Proxy dürfen cachen) oder private
(nur der Browser darf cachen) bestimmt.
Zusätzlich wird über die Antwortkopfzeile ETag
eine eindeutige Kennung für die Ausgabe einer Seite vergeben und beim wiederholten Aufruf der HTTP Statuscode 304 Not Modified
geliefert. Dies deutet darauf hin, dass die Ausgabe der Seite aus der Browser Cache stammt.
Der Cache-Control
Wert private
wird automatisch immer dann gesetzt, wenn man im EGOCMS als Benutzer angemeldet ist und keine HTML Seite ausgegeben wird. Für angemeldete EGOCMS Benutzer ist ansonsten die Browser Cache immer automatisch deaktiviert.
Proxy Cache
Falls im Netzwerk noch ein Proxy vorgeschaltet ist, kann auch dieser so eingestellt werden, dass dieser die Ausgabe in einen internen Cache schreibt. Diese Cache greift dann vor der Browser Cache.
EGOCMS Cache Einstellungen
Im EGOCMS können diverse Einstellungen zum Verhalten bestimmter Cache Ebenen vorgenommen werden.
Cache pro Seite

Im Reiter Meta einer Seite können die Cache Einstellungen für das Verwenden der Browser (inkl. Proxy) und Server (inkl. Nginx Cache) vorgenommen werden.
Es wird empfohlen, dass Seiten, die ein Captcha anzeigen, z.B. Formulare, oder eine andere Form von Spam-Schutz einsetzen, immer die gesamte Cache deaktivieren. Standard EGOCMS Formulare deaktivieren die Cache automatisch.
Browser Cache Timeout
Der Standardwert für die Browser Cache Timeout (inkl. Proxy) liegt bei 1 Stunde. Dieser Wert kann pro Mandant unter dem Reiter Dateien > Allgemein geändert werden.
APCu Cache Timeout
Falls die APCu verwendet wird, kann in den globalen Einstellungen unter dem Reiter Cache die Timeout eingestellt werden. Der Standardwert liegt auch hier bei 1 Stunde.
Cache im Code einstellen
Sie können in der index.php
Datei das Cache Verhalten für eine Seite auch vorgeben. Zum Beispiel lässt sich dieser komplett deaktivieren:
// Den gesamten Cache deaktivieren
$GLOBALS['no_cache'] = true;
Die Cache Einstellungen Browser und Server einer Seite werden in das Feld cache
geschrieben. Hier gelten folgende Werte:
0
: Keine Cache.1
: Nur der Browser darf cachen.2
: Nur der Proxy darf cachen.4
: Nur der Server darf cachen (inkl. Nginx Cache).
Kombinationen aus den Werten sind möglich, z.B.:
3
: Der Browser und Proxy dürfen cachen.7
: Der Browser, Proxy und Server dürfen cachen.
Im Code kann das z.B. so aussehen:
// Die Cache Einstellungen der Seite für die Ausgabe überschreiben
$page->field['cache'] = 7;