Magento räumt alte Cache-Einträge leider nicht automatisch ab. Das führt dazu, dass die Slow-Cache-Backends (in diesem Fall ein Dateisystem-Cache) immer größer werden. Und je mehr Dateien im Cache liegen, desto langsamer wird der Zugriff auf den Cache. Ganz besonders deutlich spürt man das bei Cache-Tag-basiertem Zugriff. Hier muss jede Datei einzeln gelesen werden, um festzustellen, ob dieser Cache-Eintrag den gewünschten Tag enthält. Schon bei wenigen 100 MB Cachedateien, kann der Zugriff plötzlich einige Minuten dauern.

Im folgenden Diagramm sieht man die Größe des 1st-Level-Caches (APC, grüne Linie) und des 2nd-Level-Caches (Dateisystem, gelbe Linie).

Das Zend Framework bringt die Möglichkeit mit , abgelaufene Cache-Einträge aus dem Cache zuentfernen. Aus Magento heraus kann man das wie folgt erledigen:

Mage::app()->getCache()->clean(Zend_Cache::CLEANING_MODE_OLD);

Packt man nun diese Zeile in ein Magento Package und lässt sie durch einen Crontab Job einmal in der Stunde laufen, sieht die Kurve plötzlich so aus:

Magento kümmert sich ab jetzt nun selbst darum, dass der Cache nicht mit alten Einträgen belastet wird.

Wer sich die Fingerübung ersparen will, für dieses kleine Helferlein eine Extension zu bauen, kann gerne mal einen Blick in meine werfen:

Aoe_CacheCleaner (latest version)

Einfach im Magento Hauptverzeichnis entpacken. Oder noch besser. Eine Ebene über dem Hauptverzeichnis in ein Verzeichnis ".modman" entpacken und dann das Module-Manager (modman) Skript laufen lassen. Die passende modman-Konfigurationsdatei ist im Archiv enthalten.

[Update] Version 0.0.2

Changes:

  • Cron expression can be configured now and defaults to "18 " (every hour)

[Update] Version 0.0.3

I've created a new version of this extension that also allows to do some other cache related operations regularly using Magento's scheduler. See Configuration > System > Cache Cleaning for configuration. If no values are set the operation won't be done by the scheduler.

Following tasks are available:

  • Clean old cache entries
  • Flush Cache Storage
  • Flush Magento Cache
  • Flush Catalog Images Cache
  • Flush JavaScript/CSS Cache

You might also be interested in my Aoe_Scheduler module that allows you the see and control all available and scheduled tasks.

Find the download link above or get the module Aoe_CacheCleaner from GitHub.

Comments

This website uses disqus for the commenting functionality. In order to protect your privacy comments are disabled by default.

Enable Comments