Joomla
Joomlas Caching-System funktioniert nicht richtig | Joomlas Caching-System funktioniert nicht richtig |
| 12.01.2009 | |
|
Sicherheitsupdate 1.5.9Aber der Reihe nach: Am 10.01.2009 wurde Joomla 1.5.9 als Sicherheitsrelease veröffentlicht. Es behebt unter anderem eine kritische Sicherheitslücke. Wer noch 1.5.8 oder ältere Versionen der 1.5.x-Reihe im Einsatz hat, sollte also unbedingt updaten. Nach einem kurzen lokalen Test habe ich meine unter 1.5 laufenden Sites am Samstag auf die neue Version upgedatet. Wie immer nach größeren Änderungen oder einem Update habe ich dann über das Administrator-Backend den Cache gelöscht - und dabei fiel mir ein neuer Eintrag im "System"-Menü auf: "Purge Expired Cache", zu deutsch "Abgelaufene Cache-Elemente löschen". Die Existenz dieses Menüeintrags, und dann noch gestern der Beitrag 1.5.9 Bugfixes or Features 2 - Purge Expired Cache, zeigt deutlich auf, was vor allem Administratoren größerer Sites schon lange wussten oder vermuteten: Joomlas Caching-System kümmert sich nicht korrekt um die Verwaltung der im Verzeichnis /cache abgelegten Dateien. Im Laufe der Zeit nimmt ihre Zahl bei weitem mehr überhand, als sie es sollte. To cache or not to cache?Fast immer macht es Sinn, über die globale Konfiguration den Cache einzuschalten, denn diese Funktion beschleunigt die Anzeige der Seiten erheblich. Joomla muss dann nicht ständig mittels immer neuer Datenbankabfragen die Seiten vollständig neu generieren, sondern greift auf die im Dateisystem abgelegte, zwischengespeicherte Seite zu - der Geschwindigkeitszuwachs ist beträchtlich. Dies gilt umso mehr bei Hostern, die eine langsame Datenbankanbindung aufweisen. Wenn die Inhalte auf der Seite eher dynamisch sind - z.B. Module, die bei jedem Aufruf potentiell veränderte Inhalte liefern können -, kann es allerdings klüger sein, den Cache nicht zu verwenden. In diesem Fall nimmt man dann eben die Performance-Einbuße in Kauf. Oder man schließt einen Kompromiss: Den Cache zwar verwenden, aber eine relativ kurze Zeit für das Caching einstellen. Cache-Einstellungen in JoomlaÜber die globale Konfiguration und den Tab "System" gelangt man in die Cache-Einstellungen. Hier wird der Cache grundsätzlich an- oder abgeschaltet und die Zeit für das Cachen festgelegt. Die Auswahl "Cache Handler" ist auf "File" festgelegt - andere Caching-Möglichkeiten bietet Joomla derzeit nicht. Wenn man sich die Einstellung "Cache Time" etwas genauer ansieht und auch den Hilfetext dazu liest ("The maximum length of time in minutes for a cache file to be stored before it is refreshed"), so hört sich das zunächst vollkommen logisch an: Hier gibt man eine Anzahl an Minuten ein, für die eine Cache-Datei gespeichert werden soll, bevor sie durch das System erneuert wird. Klare Sache, ich definiere hier also z.B. eine Zeit von 5 Minuten. Dann geschieht folgendes, wenn man etwa die Startseite eines Webauftritts betrachtet: Beim nächsten Aufruf der Startseite wird für diese Seite eine Cache-Datei mit der Endung .php erzeugt und im Dateisystem des Servers abgelegt. In den nächsten fünf Minuten liefert Joomla dann beim Aufruf der Startseite immer den Inhalt dieser Datei aus. Das geht erheblich schneller, als die zur Erzeugung der Startseiten-Inhalte nötigen Datenbankabfragen wieder und wieder auszuführen. Feine Sache! Was geschieht nach Ablauf der Cache-Zeit?Die meisten zeitbasierten Caching-Systeme arbeiten so, dass nach Ablauf der festgelegten Zeit die alten Inhalte verworfen werden und das Zwischenspeichern neu erfolgt. Ob Festplatten-Cache oder Web-Proxy, die Funktionsweise ist grundsätzlich dieselbe. Auch Joomla arbeitet ähnlich - mit einem kleinen Unterschied allerdings, der sich mir nicht erschließen will, und der dem oben zitierten Hilfetext widerspricht: Abgelaufene Cache-Dateien werden durch Joomla ergänzt durch eine gleichnamige Datei mit der Endung .php_expire, deren Inhalt aus einem Zeitstempel besteht - und bleiben im Dateisystem liegen. So sammeln sich im Lauf der Zeit hunderte und tausende dieser abgelaufenen Cache-Datei-Leichen an. Wozu das gut sein soll, außer die Platte in erheblichem Umfang vollzumüllen, habe ich noch nie verstanden. Ich habe mir deswegen angewöhnt, in regelmäßigen Abständen den Cache zu löschen. Das kann man manuell über die Joomla-Administration tun, oder automatisch über einen Cronjob. Statt den Fehler endlich einmal zu korrigieren (und in meinen Augen ist dieses Verhalten ein Fehler), hat man nun - mit etwas eigentümlicher Logik - das Löschen abgelaufener Cache-Dateien dem Administrator überlassen und empfiehlt, den neuen Befehl von Zeit zu Zeit manuell auszuführen. Wo ist nun der Unterschied zum bisherigen Löschbefehl für den Cache? Mit dem neuen Menüeintrag werden nur die als "abgelaufen" gekennzeichneten Cache-Dateien gelöscht. Die noch gültigen (also in unserem Beispiel die weniger als fünf Minuten alten) Cache-Dateien bleiben erhalten. Ob es diese Unterscheidung nun noch gebraucht hätte, wage ich stark zu bezweifeln. Sinnvoller wäre es gewesen, dem Core endlich beizubringen, dass abgelaufene Cache-Dateien bitte grundsätzlich aufzuräumen sind, und die Nutzer nicht mit einer weiteren, relativ überflüssigen Option zu behelligen. Dass man das wiederkehrende manuelle Benutzen dieses Befehls auch noch ausdrücklich empfiehlt, hat einen sehr merkwürdigen Charme. Zählt doch einmal spaßeshalber, wieviele Dateien mit der Endung .php_expire bei Euch im Verzeichnis /cache/com_content liegen. Die gleiche Zahl Cache-Dateien mit der Endung .php muss man dann noch dazurechnen, um auf die Gesamtzahl überflüssiger Dateien zu kommen. Bei mir geht das auf ein, zwei kleineren Sites jeweils schon in Richtung 1.000 Dateien. Fazit: Bei Joomla streikt die Müllabfuhr.Und das schon ziemlich lange. Ein Ende scheint nicht in Sicht, wir Administratoren müssen den Krempel weiterhin selbst entsorgen. Verwandte Artikel:
Kommentare (16)
![]()
Na super
geschrieben von Frank, 15.01.2009
Mal wieder eine der Baustellen, die ich nicht im Visier hatte. Erst war der Cache standardmäßig aus, dann an, um den Seitenaufbau zu beschleunigen, dann bei meinem Hauptprojekt wieder aus - aber der Kram läuft eh noch auf 1.0.x, da die Migration noch nicht richtig klappt. Schätze, bei 1.5.x halte ich mich an deine Tipps.
Toll
geschrieben von seven of nine, 16.01.2009
Wenn er los legt, dann richtig. Wieder ein guter Artikel, der sich in die lange Liste einreiht. Mir völlig unbekannt, gut ausgeleuchtet, detailliert beschrieben.
Danke dafür! seven
Caching und sh404
geschrieben von Michael, 18.01.2009
@ Klaus
Ich glaube, es erschienen manchmal leere Seiten bei ganz normalen Content-Items. Nach Deaktivierung des Caching lief alles wieder.
Menüpunkte
geschrieben von maki, 19.01.2009
habe jetzt auch mal den cache eingeschaltet.
mir ist dann aufgefallen dass er beim menü den active - menü item nicht mehr anzeigt. egal auf welchem menüpunkt man sich befindet, laut menü befindet man sich immer auf der startseite. tolle seite...
joomswanky
geschrieben von Gast, 21.01.2009
@Maik: Mit welcher Begründung hast Du denn das Copyright ausgeblendet?
http://www.younic.de/free-joomla-template-download-joomswanky
...
geschrieben von Christian Spang, 01.02.2009
Ein sehr interessanter Artikel. Zudem wirklich gut geschrieben. Danke!
Hatte auch das Menü-Problem
geschrieben von Michael, 04.03.2009
Hatte auch dieses Menüproblem wie mein Vorredner Maik. Bei aktiviertem Caching wurden keine Untermenüs mehr angezeigt.
Der nachfolgende Tipp von Admin hat das Problem dann aber behoben: Menüs vom Caching ausnehmen. Thx
...
geschrieben von leocat, 18.03.2009
Da sagst du was. So ein verdammter Mist, mit dem ich mich auch gerade auf unserer Firmen-HP rumschlagen muss. Seit die Seite auf Joomla 1.5 läuft, lösche ich jede Woche einmal diesen Cache bevor er zum quota-fressenden Monster mutiert.
Nun war ich mal auf Dienstreise und danach 2 Wochen im Urlaub, dann musste ich liegen gebliebenes aufarbeiten, sodass ich den cache eben mal nicht manuell löschen konnte bzw. dran dachte. Ergebnis: nun streiken sämtliche FTP-Programme, die wohl übervollen Cache-Ordner überhaupt zu öffen (geschweige zu löschen). Timeouts wohin man sieht, die vom Provider (1&1 - war nicht meine Entscheidung ;-) ) angegebene Dateianzahl ist erreicht, d.h. ich kann auch keine neuen Dateien hochladen. Ich bin doch nur Buchhändler, kein Informatiker... - und meine Chefs kann ich mit sowas nicht belästigen, die haben keinerlei Ahnung und wälzen das alles fein auf mich ab. *grrrr* Hat irgendjemand eine Idee, wie ich den Schund löschen kann? Wäre sehr dankbar für jeden noch so kleinen Tipp! GuK leocat
...
geschrieben von leocat, 19.03.2009
Hab's hingekriegt (Dank winSCP). Ich hatte - Pro sprache ca. 60.000 (!) Files - also bei 3 sprachen 180.000 - rumliegen. In nur knapp 3 Wochen. Nicht schlecht, oder? Hab das cachen jetzt abgestellt. Müssen die Kunden halt ein bisschen geduldiger mit dem Seitenaufbau sein.
...
geschrieben von slammy, 14.05.2009
vielen Dank für die detailierte Beschreibung der cache-Funktionalität und Problematik der fehlenden Garbage-Collection in joomla.
greetz, slammy Kommentar schreiben
|
Mir ist die Cache-Funktion bislang gar nicht aufgefallen. Habe sie daher mal aktiviert. Allerdings harmoniert sie nicht der SEO-Komponente sh404 (1.0.16_Beta) - schade!
Schönen Gruß!