Skip to main content

Der Cache in Joomla! 3.x

Joomla bietet dem Administrator die Möglichkeit die ganze Webseite oder nur Teile seiner Webseite zwischenzuspeichern. Wie das Ganze funktioniert erkläre ich in dieser kleinen Anleitung.

Grundsätzlich gibt es auf einer Joomla-Website Webseite drei Dinge, die zwischengespeichert werden können:

  1. Die ganze Seite selbst - der Seiten-Cache
  2. Die Ausgabe der Joomla-Komponente für diese Webseite - bekannt als View-Cache - ist die Ausgabe.
  3. Die Ausgabe aus den auf dieser Seite gezeigten Modulen - bekannt als Modul-Cache.

Wie aktiviert/deaktiviert man den Cache auf seiner Joomla! Seite?

Es gibt gleiche mehrere Cache-Einstellungen, mit denen man steuert was zwischengespeichert wird und was nicht:

  1. Unter "Erweiterungen -> Plugins" das System-Plugin "System - Seitencache". Hier kann man einstellen ober der Browsercache genutzt werden soll oder nicht.
  2. Unter "System -> Konfiguration" im Reiter "System" kann man unter Cache-Einstellungen die folgenden Optionen Wählen:
    1. AUS - Caching deaktiviert
    2. Normales Caching: Kleiner System-Cache
    3. Erweitertes Caching (Standard): Schnellerer, größerer System-Cache, inklusive eines Modul-Caches.
  3. Viele Module haben in ihren Optionen die Registerkarte Erweitert, in der das Caching auf Global verwenden oder Kein Caching eingestellt werden kann.

Wie lösche ich den Cache auf meiner Joomla! Seite?

  1. Im oberen Menü der Administrationsoberfläche klicken wir auf "System -> Cache leeren".
  2. Jetzt erscheint eine Tabelle mit den Einträgen des Cache für das Frontend.
  3. Um alles zu löschen, klickt man auf "Alles löschen".
  4. Um den Back-End-Cache der Webseite zu leeren, wählt man "Administrator".
  5. Mit dem klick auf "alles löschen" wir der gesamte Cache gelehrt.

Wie lösche ich den Cache in meinem Browser?

Wenn Sie dieselbe Webseite erneut besuchen, zeigt Ihr Browser manchmal vorzugsweise den Lokal gespeicherten Inhalt an, anstatt den gleichen Inhalt erneut aus dem Internet zu laden. Dieses Verhalten kann dazu führen, dass Änderungen die man an seiner Website vornimmt nicht angezeigt werden.

Um die Änderungen zu sehen, müssen Sie die lokale Version Ihrer Webseite aus dem Browser-Cache löschen, was dann dazu führt, dass der Browser bei der nächsten Aktualisierung automatisch die neue Version herunterlädt.

  1. Chrome: Drücken Sie Strg + Umschalt + Entf auf Ihrer Tastatur und klicken Sie auf Daten löschen
  2. Edge: Drücken Sie Strg + Umschalt + Entf auf Ihrer Tastatur und klicken Sie auf Löschen
  3. Internet Explorer: Drücken Sie Strg + Umschalt + Entf auf Ihrer Tastatur und klicken Sie auf Löschen
  4. Firefox: Drücken Sie Strg + Umschalt + Entf auf Ihrer Tastatur und klicken Sie auf Jetzt löschen
  5. Safari: Drücken Sie Option + ⌘ + E auf Ihrer Tastatur
  6. Opera: Drücken Sie Strg + Umschalt + Entf auf Ihrer Tastatur und klicken Sie auf Daten löschen

Die einzelnen Cachesystem von Joomla! im Detail

Seitencache

Um dies einzuschalten, geht man zu Administrator Extensions / Plugins, sucht das System - Page Cache Plugin und aktiviert es. Das bedeutet, dass Seiten der Website nun zwischengespeichert werden, und wenn sie erneut aufgerufen werden, wird die zwischengespeicherte Seite bereitgestellt, anstatt dass sie von Joomla aus den Informationen in der Datenbank generiert wird. Die zwischengespeicherte Seite wird weiterhin bedient, bis sie abgelaufen ist - wie durch den Parameter Cache Time in den Globalen Konfiguration / System / Cache-Einstellungen definiert.

Wenn man diese Seite als Tutorial liest und den Page Caching testen möchte, dann ist es am besten, die Cache-Einstellungen für die globale Konfiguration auf

  • Cache-Handler - Datei
  • Pfad zum Cache-Ordner - leer lassen
  • Cache Time - 15 (die Standardeinstellung von 15 Minuten)
  • System Cache - AUS - Caching deaktiviert

Um zu überprüfen, ob der Seiten-Cache funktioniert, geht man zu einer Webseite, die einen Artikel anzeigt. Nachdem man diese Seite angezeigt hat, sollten man im Dateisystem ein cache/page Verzeichnis mit einer Datei finden, die einen Dateinamen wie <string of hex digits>-cache page-<string of hex digits>.php enthält. (Joomla muss separate Cacheseiten für separate URLs speichern, so dass die zweite Zeichenkette von Hex-Ziffern ein Hash der URL der Webseite ist, um den Dateinamen eindeutig auf dieser Seite zu zuordnen).

Verwende dann die Administratorfunktionalität, um den Text dieses Artikels zu ändern und die Seite der Website erneut anzuzeigen. Man sollte die zwischengespeicherte Version finden, nicht den geänderten Text.

Das Ändern eines Artikels (oder eines anderen Joomla-Elements) löscht nicht den Seiten-Cache für die Webseite(n), auf der dieser Artikel angezeigt wird. Um den Seiten-Cache zu löschen, geht man zu Administrator System / Cache löschen. Klickt man auf das Kontrollkästchen neben der Cachegruppe "Seite" und drückt man die Schaltfläche Löschen. Wenn man seine Webseite erneut anzeigt, sollte man nun den geänderten Text angezeigt bekommen.

Wenn Ihre Website eine Funktion wie ein Einkaufskorb hat, wird das Anwenden von Page Caching zu Problemen führen, da die Seiten zeigen müssen, was der Kunde bereits ausgewählt hat, anstatt eine gecachte Seite anzuzeigen, die allen gemeinsam ist. Sie können das System Page Cache Plugin jedoch so konfigurieren, dass das Zwischenspeichern bestimmter Menüpunkte oder bestimmter URLs und URL-Bereiche (auf der Registerkarte Erweitert) ausgeschlossen ist, so dass nur wirklich statische Seiten zwischengespeichert werden.

konservatives Caching

Mit Conservative Caching kann man die Ansichts Ausgabe von Komponenten und die Ausgabe von Modulen, die das Caching erlauben, zwischenspeichern. Beachten sollte man jedoch, dass dies nur auf Seiten funktioniert, die nicht über den Page Cache zwischengespeichert werden, da bei diesen Seiten die gesamte Webseite zwischengespeichert wird und konservatives Caching nicht einmal berücksichtigt wird.

Um das konservative Caching einzuschalten:

  1. Gehe zu Administrator Globale Konfiguration / System und stelle in den Cache-Einstellungen den System-Cache auf EIN - Konservatives Caching.
  2. Gehe zu Erweiterungen / Module und wähle die Module aus, die zwischengespeichert sollen. Wenn dieses Modul das Caching erlaubt, dann sollte man unter der Registerkarte Erweitert die Option Caching auf
  • Global - das Modul wird zwischengespeichert (da unter Global jetzt konservatives Caching eingestellt ist)
  • Kein Caching - dies Modul wird nicht zwischengespeichert.

(Beachte, dass die Cache-Zeit in der globalen Konfiguration in Minuten angegeben ist, während die Cache-Zeit in den Moduleinstellungen in Sekunden angegeben ist.)

Um zu überprüfen, ob es funktioniert, stelle sicher, dass Du abgemeldet bist und rufe einen Artikel auf Deiner Webseite auf. Dann sollte im Dateisystem ein Ordner cache/com_content sein, der die Cache-Datei enthält.

Man findet auch andere Verzeichnisse wie cache/com_languages (da die Anzeige der Seite das Laden der aktuellen Sprache beinhaltet, und diese wird ebenfalls zwischengespeichert) und Verzeichnisse, die sich auf den Modul-Cache beziehen, z.B. cache/com_modules. Diese resultieren aus der Verwendung von Cache, den Entwickler innerhalb der Joomla-Anwendung kodiert haben.

Wenn man den Artikel bearbeitet und speichert und dann die Seite aktualisiert, wird der bearbeitete Text angezeigt. Immer wenn eine Bearbeitung gespeichert wird, leert Joomla den Cache für diesen Artikel.

Man kann jedoch nachweisen, dass der Cache funktioniert, wenn man die Cache-Datei im Verzeichnis cache/com_content mit einem einfachen Texteditor bearbeitet. Damit ändert man einen Buchstaben innerhalb des Artikels und speichere die Cache-Datei. Aktualisiert man nun die Webseite, sollte die Änderung der Cache-Datei zu sehen sein.

Wie kann man auswählen, welche Ansicht der Kompomenten zwischengespeichert wird und unter welchen Umständen? Leider ist das nicht möglich. Dies wird von den Joomla-Entwicklern in der component php festgelegt. Für jede Komponente gelten unterschiedliche Kriterien. Welche das sind, ist in der Datei controller.php zu finden. Für die Komponente Kontakt z.B. findet man die Kriterien zum Zeitpunkt des Schreibens (Joomla Version 3.9.2.) in der Datei components/com_contact/controller.php.

if (JFactory::getApplication()->getUserState('com_contact.contact.data') === null) {
        $cachable = true;
}

Das bedeutet, dass die mit Kontakten verknüpften Ansichten zwischengespeichert werden können, es sei denn, es gibt Sitzungsdaten, die mit com_contact.contact.data verschlüsselt sind - was der Fall ist, wenn der Benutzer in der Benutzersitzung ein Kontaktformular angezeigt hat (z.B. auf einer Seite, auf die ein Menüpunkt vom Typ Kontakte / Single Contact zeigt).

Die entsprechende Datei für Artikel components/com_content/controller.php enthält:

$cachable = true;
if ($user->get('id') || ($this->input->getMethod() === 'POST' && (($vName === 'category' && $this->input->get('layout') !== 'blog') || $vName === 'archive' ))) {
    $cachable = false;
}

Der Ausdruck $user->get('id') ist wahr, wenn es sich um einen angemeldeten Benutzer handelt, d.h. Artikel werden für angemeldete Benutzer nie zwischengespeichert. Die nachfolgenden Ausdrücke beziehen sich auf andere Bedingungen, wenn das Caching nicht durchgeführt wird, selbst wenn der Benutzer nicht angemeldet ist.

Auf diese Weise kann man erkennen unter welchen Umständen die Zwischenspeicherung erfolgt, aber sie zu ändern ist nicht ratsam. Man kann auch demonstrieren, dass Module zwischengespeichert werden, indem man das Joomla Breadcrumbs-Modul verwendet. Man muss sicherstellen, dass es an einer Modulposition auf der Webseite angezeigt wird, seine Caching-Option einstellt und die zwischengespeicherte Datei im Cache/mod_breadcrumbs manuell bearbeitet.

progressives Coaching

Wie das konservative Caching speichert auch das progressive Caching die Ausgabe aus Komponentensichten und Modulen. Der funktionale Unterschied zwischen den beiden besteht darin, dass beim Progressive Caching ' für nicht angemeldete Benutzer alle Module immer zwischengespeichert werden'. In diesem Fall hat die Einstellung der Option No Caching für ein Modul keine Auswirkung. Wenn die Caching-Speicheroption auf Datei steht, dann finden Sie die Modul-Cache-Datei (die Ausgabe aller Module wird in derselben Datei gespeichert) im Verzeichnis cache/com_modules.

Um das progressive Caching einzuschalten, geht man zur Administrator Global Configuration / System und stellt in den Cache-Einstellungen den System-Cache auf AN- Progressive Caching.

Hinsichtlich der Bedingungen für das Caching von Joomla-Kernkomponentenansichten gibt es keinen Unterschied zwischen konservativem und progressivem Caching'. Trotz allem, was man auf einigen Websites lesen kann und Antworten auf Fragen zum Stapelüberlauf, ist es nicht der Fall, dass sich konservatives Caching auf das nicht angemeldete Mitglied bezieht und progressives Caching auf das angemeldete Mitglied.

 

Weiterführende Informationen