WordPress 2.5 Cache

WordPress Logo

Der WordPress eigene Cache ist keine Neuigkeit mehr, trotzdem gibt es mit der Version 2.5 einige Veränderungen. Hier will ich nicht tiefer auf Aktivierung und Nutzung des Cache eingehen, ebenso nicht auf die Nutzung der sehr vielen verschiedenen Plugins zum Thema Cache. Liegt einfach daran, dass meine Tests nicht abgeschlossen sind und es ein sehr vielschichtiges Thema ist. Außerdem möchte ich dem Laien diese Nutzung in WordPress nicht empfehlen, zu viele Randbedingungen. Zum Cache und deren Optimierung habe ich schon vor einiger Zeit einige Hinweise gegeben, siehe „WordPress Cache kontrollieren“.

Cache (BE: [kaʃ], AE: [kæʃ]) bezeichnet in der EDV einen schnellen Puffer-Speicher, der in unterschiedlichen Geräten wie z. B. CPUs oder Festplatten zum Einsatz kommt.
Wikipedia

Aber weil immer wieder Fragen in Zusammenhang mit WP 2.5 auftauchen einige wenige nützliche Hinweise zum Cache. Grundsätzlich muss man sagen, WordPress arbeitet an diesem Thema und erfüllt damit die Wünsche der Nutzer. Man muss aber auch sagen, ältere Versionen sind schneller, was aber vor allem daran liegt, dass WordPress unaufhaltsam wächst. Das gilt nicht nur für die Nutzerzahlen, sondern auch für die Funktionen der Applikation.

Ebenso ist aktuell der Stand so, dass die meisten Plugins für WordPress einen besseren Cache anbieten, als es der hauseigen ist, auch der in WP 2.5. Nun aber zum internen Cache, diesen zu nutzen ist ratsam!

Mit der neuen Version 2.5 wurde der Cache verändert, es wird nun der Arbeitsspeicher genutzt. Der Objekt-Cache, welcher sich in der /wp-includes/cache.php befindet, nutzt nicht mehr das Dateisystem. Die Aktivierung des Cache geschieht durch das Hinterlegen der Konstanten in der wp-config.php.


define('ENABLE_CACHE', true); // Cache on
define('CACHE_EXPIRATION_TIME', 604800); // Time in seconds, default is 900s

Im weiteren empfiehlt es sich das PHP Memory Limit zu definieren, zu erhöhen. Im Standard hat WordPress diesen in der Version 2.5 auf 32 MByte gesetzt, siehe wp-settings.php. Um diesen Wert zu ändern, muss man aber nicht in die Datei eingreifen, es genügt das Hinterlegen der entsprechenden Konstante in der wp-config.php.


define('WP_MEMORY_LIMIT', '64M');

Ein Wert von 32 MByte sollte recht gut sein, das eine oder andere Experiment gibt eventuell Aufschluss.

Zur Überwachung und Optimierung des Cache empfiehlt sich auch weiterhin das Plugin „PJW WP Cache Inspect“, welches von Peter Westwood ist und durch mich ein wenig angepasst wurde, dabei habe ich Veränderungen zum Leeren des Cache und zur Funktion unter WordPress 2.5 vorgenommen - näheres im Artikel „WordPress Cache kontrollieren“. Dort steht auch das Plugin zum Download bereit.

Sollte es aber doch zu Problemen mit der neuen Cache-Version kommen, dann kann man mittels Plugin „File-Based Object Cache Extension“ den alten dateibasierenden Cache wieder aktivieren. Es ist aber ratsam, den aktuellen Cache zu nutzen. Sollte es Probleme mit dem Webspace-Provider geben, so ist eine Zusammenarbeit ratsam bevor man den Cache der Vorgängerversion wieder aktiviert, denn die Last kann doch recht hoch sein. Alternativ kann man mit den verschiedensten Plugins, wenn es tatsächlich so viele Zugriffe sind, die Last senken, was vor allem für die CPU-Last des Servers gilt.

Weiterführende Links

18 Comments

  1. Soweit ich das sehe, ist der mit WP 2.5 ausgelieferte Cache ein kurzlebiger Speichercache für Datenbankobjekte, dessen API zusätzlich auch für Dritthersteller nutzbar ist (über die Cache-Group zur Kollisionsvermeidung).

    Dazu passt, dass ich keine Verwendung der Konstanten CACHE_EXPIRATION_TIME im gesamten WordPress-Code orten kann.

    WP_Object_Cache::get() verwendet gecachte Objekte ohne jede Alterseinschränkung - ist ja auch sinnvoll bei Caches, die nach ein paar 100 ms zusammen mit dem PHP-Prozess verschwinden.

    Was übersehe ich?

  2. @Robert: Aktuell werden die Konstanten nicht abgefragt oder definiert, ganz anders zu 2.3*.
    Man kann in jeder eigenen Funktion oder eben in den Core den Cache aktivieren bzw. deaktivieren.

    	var $cache_enabled = false;
    	var $expiration_time = 900;
    

    Zuerst einmal trifft es deine Zusammenfassung genau! Ich denke, dass WP im Standard immer cacht, ohne die Aktivierung wie oben beschrieben. Will es aber trotzdem hinterlegen, falls es Veränderungen gibt. Bis 2.5 klappt die Definition prima, ab 2.5 sollte es auch ohne Def. aktiv sein. Ich kenne die aktuellen Entwicklungsfahrplan nicht. In der aktuellen Version wäre also die Definition nicht notwendig.
    Ich habe mal mit unterschiedlichen Cache-Plugins bzw. Erweiterungen gespielt und es macht viel aus, will aber nicht zu viel verraten, weil ich vorerst nicht alles angesehen habe und weil ich hoffe, dass WP im Core da noch einiges bringt. Ideen sind genügend da. Die aktuelle Cache-Version stammt ja auch von einem Plugin.

  3. Frank, wofür würde WP das Lock benötigen?

    Konkurrierende Threads sind ja für Cache-Objekte im Speicher jedes einzelnen Requesthandler-Prozesses kaum zu befürchten 😉

  4. @Robert Wetzlmayr: Bisher hat WP die Datei wp-content/cache/wp_object_cache.lock erstellt, Inhalte habe ich nie welche gesehen, auch wenn die Datei immer neu geschrieben wurde.

    * Habe auf deinem Blog mehrfach Kommentare hinterlassen, schaltest du nicht frei oder gibt es da Probleme, mal vom Handy, mal vom PC?

  5. @Robert Wetzlmayr: ja, hatte unter anderem bei deinem tollen Beitrag zu 2.6 kommentiert. Egal, beim nächsten mal, schau ich genau hin und melde mich, wenn etwas streikt.

Comments are closed.