Joomla!® Caching - Bessere Ladezeiten für Joomla!® Webseiten

Joomla!® Caching mit Page Cache, View Cache, Modul Cache und dem JCache-Objekt

Was versteht man eigentlich unter Caching in Joomla!®? Der Cache-Mechanismus in Joomla bietet die Möglichkeit, Besuchern der Website eine zwischengespeicherte Ansicht (oder Teile) einer Website zu präsentieren, ohne dass die Daten bei jedem Aufruf aus der Datenbank geladen werden müssen. Standardmäßig ist das Caching bei Joomla!® deaktiviert. Es muss also aktiv eingeschaltet werden. In Joomla!® werden standardmäßig drei Arten von Caching unterstützt: Page Caching, View Caching und Module Caching.

Vorab ist wichtig zu erwähnen, dass Joomla!® standardmäßig kein Caching für angemeldete Benutzer ermöglicht. D.h. alle in Joomla!® integrierten Cache-Mechanismen funktionen nicht, nachdem sich ein Nutzer angemeldet hat. Individuelles Caching mit dem JCache Objekt bildet hier eine Ausnahme. Aber dazu später mehr. Schauen wir uns zuerst die integrierten Cache Methoden an.

Page Caching (Seitencache)

Der Seitencache ist standardmäßig deaktiviert in Joomla. Sobald er aktiviert ist, speichert Joomla ausgelieferte Seiten und liefert diese beim nächsten Aufruf aus. Dadurch finden beim Laden der Seite keine Zugriffe mehr auf die Datenbank zu. Dies funktioniert wie oben beschrieben nur solange sich die Besucher der Seite nicht anmelden.

Um den Pache-Cache zu aktivieren muss man wie folgt vorgehen:

  • Anmelden im Backend von Joomla
  • Aufruf der Plugin-Verwaltungen unter Erweiterungen
  • Nach dem "Cache" Plugin (Seitencache) suchen
  • Die Detailansicht des Plugins aufrufen und das Plugin aktivieren
  • Die Browsercaching-Option aktivieren

 Joomla Page Cache

Browser-Caching 

Wird die Browser-Caching Funktion aktiviert, sendet der Server einen "304 not modified" Header an den Browser. Dies führt dazu, dass der Browser die Seite zwischenspeichert und die Seite bei einem weiteren Aufruf in der gleichen Benutzer-Session direkt aus dem Browser-Cache lädt.

Joomla Browser Caching aktivieren

View Caching und Modul Caching

Das View Caching oder Modul Caching in Joomla unterscheidet sich grundlegend vom oben beschriebenen Page Caching. Während beim Page Caching die gesamte Seite zwischengespeichert wird, werden beim View oder Modul Caching nur Teile der Seite zwischengespeichert. Für die Konfiguration muss man wie folgt vorgehen:

  • Anmelden im Backend von Joomla / Administratorbereich
  • Den Menüpunkt System > Konfiguration aufrufen
  • Im Tab "System" den Abschnitt "Zwischenspeicher (Cache)" suchen.
  • Den Cache aktivieren - entweder "AN - normales Caching" oder "AN - Erweitertes Caching". Die Unterschiede werden im folgenden Abschnitt erklärt.
  • Setzen der Speichermethode (z.B. Datei)
  • Auswahl der Cachedauer in Minuten (Bei Webseiten, deren Inhalte sich häufig ändern, sollte die Cachedauer nicht zu lange gewählt werden).

Aktivieren des Joomla View und Modul Caches

Die beiden möglichen Cachemethoden unterscheiden sich wie folgt:

Normales Caching

Normales Caching speichert die Seiteninhalte einmal für alle Seitenbesucher. D.h. ein erster Besucher ruft die Seite auf und der Inhalt wird gecacht. Besucht nun ein zweiter Besucher die Seite, wird im der gecachte Seiteninhalt von Besucher 1 angezeigt.

Erweitertes Caching

Beim Erweiterten Caching wird der Inhalt pro Besucher gespeichert. Diese Einstellung ist immer dann zu empfehlen, wenn Module Inhalte anzeigen, die benutzerspezifisch sind.

 

Das JCache-Objekt

Das JCache Objekt von Joomla bietet die Möglichkeit, in eigenen Erweiterungen, Views oder im Template Caching ganz individuell zu nutzen. Dazu holt man sich das Cache Objekt für eine beliebige Komponente und aktiviert das Caching. Nun muss man sich nur noch eine eindeutige Cache-ID erzeugen, über die man die gecachten Inhalte später wieder auslesen will. Dies kann z.B. der Name eines Views in Kombination mit der Benutzer-ID sein, wenn man z.B. die Ansicht pro Benutzer speichern möchte. Unter dieser ID lässt sich der gewünschte Inhalt problemlos zwischenspeichern und wieder auslesen.

// JCache Object initialization
$output = '';
$cache = JFactory::getCache('com_something', '');
$cache->setCaching(true);
$cache->setLifeTime(86400);

// Create a Cache ID that works for you :
$cacheid = md5('something'.JFactory::getUser()->id); // Just an example

// Get cached output
$output = $cache->get($cacheid);
if (empty($output)) {
$output = "something I want to cache";
$cache->store($output, $cacheid);
}