Startseite arrow Joomla arrow Joomlas Caching-System funktioniert nicht richtig
Joomlas Caching-System funktioniert nicht richtig
Artikel bookmarken:
Delicious
Technorati
Mister Wong
12.01.2009

Der Mülleimer wird nicht leerer ... und mit der Veröffentlichung von Joomla 1.5.9 hat das Entwicklerteam den endgültigen Beweis dafür geliefert.

Sicherheitsupdate 1.5.9

Aber 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.

Kommentare (16)Add Comment
Inkompatibel zu sh404
geschrieben von Michael, 12.01.2009
Danke für den aufschlussreichen Artikel.

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ß!
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
@Michael
geschrieben von Admin, 18.01.2009
Kannst Du näher beschreiben, inwiefern der Cache nicht mit sh404SEF zusammenarbeitet? Mit ist nämlich noch nichts Derartiges aufgefallen, aber ich habe auch noch nicht die allerneueste Beta von sh404SEF im Einsatz.

@Frank: 1.5 ist nach meinem Empfinden von Haus aus deutlich langsamer als 1.0, von daher ist der Cache schon wünschenswert.

@seven: danke smilies/smiley.gif

Viele Grüße,
Klaus
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...
Menüpunkte
geschrieben von Admin, 19.01.2009
Hallo Maki,

ich hab das eben auf Deiner Seite gesehen. (Schön gemacht übrigens!) Sehr merkwürdig, ein solches Verhalten kenne ich bisher nicht.

Hast Du mal versucht, das Mainmenu vom Caching auszunehmen?

Viele Grüße,
Klaus
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 Admin, 20.03.2009
Hallo leocat,

kein Wunder, dass bei diesen Mengen etliche Programme aussteigen. smilies/shocked.gif Gratuliere zur WinSCP-Methode, für einen Buchhändler bist Du verdammt versiert! smilies/grin.gif

Viele Grüße,
Klaus
...
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
...
geschrieben von Billickz, 29.05.2009
Danke für den Tipp mit den Menüs! Hat geholfen!
Danke
geschrieben von M., 01.07.2009
Bin ebenfalls bei 1&1 und war etwas überrascht das die Quota bereits erfüllt war smilies/shocked.gif und dann fiel mir nur die Cachingfunktion ein, momentan läuft bei ebenfalls die Löschung von ca. 70.000 Dateien smilies/angry.gif

Kommentar schreiben
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
kleiner | groesser

busy
 
Artikel bookmarken:
Delicious
Technorati
Mister Wong

Kommentare

Joomlas Caching-System funktioniert nicht richtig
Bin ebenfalls bei 1&1 und war etwas überrascht das die Quota bereits ...

Wie man Joomlas Cache automatisch aufräumt
Danke für den Tipp ;)

Joomla 1.6: SEO verbessern
Hallo Bilder, wenn man dem hier glauben darf ist es bald soweit: htt...

Joomla 1.6: SEO verbessern
WANN kommt es den jetzt raus ich wills haben ?

17 Joomla-Template-Clubs im Vergleich
Danke für die Ausführliche Bericht! wenn man bei Yootheme ein Silver...

Wie man Joomlas Cache automatisch aufräumt
danke für den tip :)

Player und Influencer bei Joomla
Wie siehts mit http://rmdstudio.com/ aus? Die Jungs bauen mit dem Nook...

Die besten Joomla-Templates