Gunnar Tillmann hat die WordPress-Cache-Funktion vor einiger Zeit sehr schön vorgestellt, wobei er auf die Möglichkeiten für Entwickler eingeht, das Einbinden in eigene Lösungen - Plugins oder Templates beispielsweise.
Das gleiche Thema hat Michael auch nochmal aufgegriffen und damit wurde es dann wesentlich populärer - Michael hat wohl einen großen Leserstamm.
Die Cache-Funktion wird aktiviert, in dem man zwei Zeilen der wp-config.php hinzufügt. Der Ordner wp-content muss mit Schreibrechten ausgestattet werden, damit das nötige Verzeichnis cache automatisch angelegt werden kann, ansonsten händisch anlegen.
define('ENABLE_CACHE', true); // Cache on
define('CACHE_EXPIRATION_TIME', 604800); // Time in seconds, default is 900s
Hinweis: Seit WordPress Version 2.5 ist dies nicht mehr gültig, lese auch einen neueren Beitrag dazu bei mir: WordPress Cache nutzen
Nun hat der Cache sicher hervorragende Eigenschaften, wie aber auch Michael schon berichtet -
nur meist denkt man in diesem Moment nie an den Cache (Murphy lässt grüßen
Ebenso hat WordPress von Haus aus keine Überprüfung des Cache, was passiert also wirklich und wie kann ich ihn gegebenenfalls leeren? Natürlich hat sich auch dazu schon ein findiger Kopf gefunden und ein Plugin erstellt. Das Plugin „PJW WP Cache Inspect“ gibt eine Ausgabe alle relevanten Daten im Frontend aus, so dass der Admin, insofern er im Backend angemeldet ist, sich über die aktuelle Cache-Situation auf der entsprechenden Seite informieren kann. Der nicht geloggte User bekommt davon nichts mit.
Das Plugin geht mir allerdings nicht weit genug, denn es gibt einige Anwendungen, bei denen es sinnvoll ist, den Cache zu leeren. Dazu zählen zum Beispiel, das Löschen von Kommentaren, das Editieren von Kommentaren und das Veröffentlichen von Seiten und Artikeln.
Damit diese Funktionalität gegeben ist, habe ich das Plugin um wenige Zeilen erweitert und nun muss man sich darum nicht mehr kümmern. Der Download ist im Anschluss zu finden. zusätzlich kann im Bereich Verwalten des Backend den Cache mit einem Klick löschen.
PHP Memory Limit
Es empfiehlt sich den PHP Memory Limit zu setzen, 32MByte sollten ein guter Wert sein, auch diese Konstanten-Definition gehört in die wp-config.php.
define('WP_MEMORY_LIMIT', '32M');
Anforderungen
Das Plugin arbeitet mit WP 2.0 und höher, inklusive 2.5 ab Version 0.52 des Plugins.
Installation
- Cache aktivieren, wie oben beschrieben.
- Plugin downloaden und die zip-Datei lokal entpacken.
- Die PHP-Datei in euren WordPress-Plugin-Ordner kopieren (/wp-content/plugins/).
- Im Adminbereich deines Blogs das Plugin aktivieren.
- Die Ausgabe im Frontend erscheint, wenn man als Admin eingeloggt ist!
Download:
Ist die Arbeit nicht 1 Euro wert?
Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.
Möchtest du mehr oder anders spenden, so besuche meine Wunschliste.
Download als php-Datei:
pjw-wp-cache-inspect.zip - 1 KByte
Hinweis
Das Plugin wurde von mir komplett neu aufgesetzt und erstellt - nähere Informationen dazu gibt es im entsprechenden Artikel: WP Cache steuern (Plugin).
Historie
- 0.51 - Hinzufügen der Fkt. zum Löschen des Cache bei: Beitrag o. Seite veröffentlichen, Kommentar editieren, Kommentar löschen, Status von Privat zu öffentlich
- 0.52 - WP 2.5 tauglich, nutzbar auch für < 2.5, valider Code im Frontend
- keine Updates mehr - neues Plugin mit gleicher Hintergrundidee
habe die Cache-Funktion bei meinem letzten Projekt Ferienhäuser Sardinien getestet, leider ohne Erfolg. Scheinbar bringt WordPress die beiden Subdomains durcheinander. Das Projekt ist zweisprachig und läuft auf einer Instanz alla Multi-(Sub)Domain-WordPress.
Kaum freut man sich über diese Funktion, gibts schon wieder Sachen zu beachten und Erweiterungen, (fr)ahhh(nk)!
Wahrscheinlich bilde ich mir das nur ein weil es eh irgendwie sicher nichts miteinander zu tun hat aber die "Bitte moderiere Kommentar x" Emails kamen seit dem aktivieren Cache "später" an.. Zufall? Murphy? Omen? Einbildung durch Tatsachen? Hachje..
Nicht umsonst ist der Cache im Standard nicht aktiviert.
Schon möglich, da müsste man mal prüfen, auf was der Cache alles wirkt. Die Doku ist derzeit sehr dürftig.
Dann hätten die ganzen Browserleutchen ja auch mal den Cache im Auslieferungszustand deaktiviert lassen können - weil wie oft ist der Cache schuld? Sehr oft!
Nein, hätten sie nicht, denn sie prüfen im Vorfeld ob es Veränderungen gibt. Allerdings administrieren auch die wenigsten Browsernutzer ihren Inhalt nicht selbst. Bei WordPress gibt es aber recht viele User, die nicht immer an alles denken.
Habe noch ein wenig am Code gefeilt und die neue Version hoch geladen.
Hallo Frank!
Wirklich ein sehr gelungenes Plugin - aber warum hast Du im Vergleich zum Original von Peter Westwood die "Cold Cache Hits" aus dem Info-Container rausgenommen? Habe diese Info wieder selbst hinzugefügt, weil ich sie doch ganz interessant finde.
Bin froh, dass ich über den WP-eigenen Cache gestolpert bin - die DB-Queries reduzieren sich teilweise um die Hälfte, wie ich dank dieses Plugins jetzt immer schön sehen kann. Das bringt wirklich einen erheblichen Performance-Gewinn.
Thanks!
@Marco Luthe: Ist nut auskommentiert, da es bei vielen Anwendern nur Verwirrung stiftet. Sollte ich veilleicht hinzu schreiben.
Komisch, hab alles so gemacht wie beschrieben, aber der cache Ordner bleibt leer
Und das mit wp 2.6.1 !? LG aus Berlin
@Daniel: Ab Version 2.5 wird der Ordner nicht mehr benötigt, siehe Artikel WP 2.5 Cache
Hallo Frank,
ich bin auf wp 2.2. und habe das Plugin aktiviert. Sobald ich bei den Einstellungen etwas ändere, kommen diverse Fehlermeldungen, wenn ich nach der Änderung auf die Startseite gehe.
Nach dieser Fehlermeldung auf allen Seiten habe ich das Plugin vom Server genommen:
Fatal error: Call to undefined function is_ssl() in /homepages/xx/dxxxx/htdocs/xxxx/wp-content/plugins/wp-cache-inspect/wp-cache-inspect.php on line 171
Viele Grüße
Rita
@Rita: versuche es mal jetzt. Sollte es nun in 2.2 nicht gehen, dann werden dort keine eigenen Felder in den Rollen genutzt und dazu müsste ich recht viel umbauen - sonderliches Interesse habe ich daran nicht.
Ich habe gerade keine 2.2 laufen, nur 2.0 und 2.3
Hab cache inspect mal ausprobiert. Danke für den Tip! war sehr nützlich.
Ich bin seit langein paar negativen Erfahrungen sehr skeptisch in Bezug auf die verschiedenen Cache-Lösungen geworden. Irgendwie ist immer der Cahe das Problem, wenn die Seite mal nicht wieder will. Zuletzt mit WP Supercache so gewesen. Erst das komplette Löschen des Plugins half wieder.
Warum bringt es WordPress nicht fertig eine eigene Cache-Lösung zu implementieren ? Funktioniert in Joomla doch auch ?
@Yuppie: WordPress hat einen "eigenen" Cache, wobei nur der RAM des Server genutzt wird. Dies hat Gründe, denn so werden alle Lösungen und Möglichkeiten auf den Server ausgelagert, was immer besser ist. Mein Plugin optimiert nur diesen Cache, heist ich stoße Funktionen von WP an, wenn bestimmte Ablaufe starten, so dass er auch dann leer ist, wenn er im Standard noch aktiv wäre - typ. Beispiel sind Kommentare.
@Frank: Stimmt, das habe ich in meinem Ärger gar nicht mitbekommen. Bei meinen Tests mit den internen Cache hatte ich mich auch erst gewundert, warum nichts in den cache-Ordner geschrieben wird. Klar: RAM-Caching!
Hallo Frank, mein Problem ist die Rotation im Header. Besteht die Möglichkeit für diesen Bereich (vielleicht mit einer Funkition umschließen) das Cachen zu deaktivieren? Die Rotation hat ja seinen Sinn nur funktioniert sie natürlich nicht beim Cachen.
LG, René
Seit ich das in die datei eingetragen habe geht bei mir nichts mehr, na super. sehe jetzt immer diersen fehler Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/meinetechwelt.net/httpdocs/wp-config.php:1) in /var/www/vhosts/meinetechwelt.net/httpdocs/wp-content/plugins/si-contact-form/si-contact-form.php on line 885
Springe zu Beiträge
Und in mein Admin Menü komme ich auch nicht mehr rein.
@Martin: die Fehlermeldung sagt doch einiges, das Plugin SI Contact Form arbeitet mit Sessions und damit kann man nicht einfach den Cache umbauen. Aber eigentlich muss man auch nichts eintragen, sondern nur das Plugin nutzen, wenn man mag. Der obige Eintrag ist hinfällig, da seit WP 2.8 der Cache immer aktiv ist.
Habe ein Backup der Datei zurück gespielt und jetzt funktioniert wieder alles ohne Fehlermeldung. Das Plugin habe ich auch wieder gelöscht wenn man es eh nicht mehr braucht.
@Martin: nicht das Plugin, den Codeschnippsel in der wp-config.php braucht man nicht mehr. Das Plugin hat weiter seine Berechtigung, wenn man den Cache von WP kontrollieren will.
Dachte ab WP 2.8 ist das eh automatisch dabei?
@Martin: der Cache ja, aber die Kontrolle über den Cache nicht - das bringt das Plugin
Ok habe es wieder installiert und läuft auch aber so ganz verstehe ich das Plugin nicht. Habe die Standard Settings mal gelassen aber was genau macht das Plugin den bei den ganzen Seiten steht false, was für mich bedeutet das nichts gecacht wird??
@Martin: das Plugin leert bzw. baut den Cache neu auf, an ganz bestimmten Punkten wie zum Beispiel nach dem Freischalten eines Kommentars. WP macht das im Standard nicht, es läßt den Inhalt des Cache neu schreiben im Intervall. Ebenso gibt das Plugin einen Zugriff auf das neu Setzen des Cache, wenn man mag. Dafür gibt es den Link im Footer, Frontend oder über die Quicknavi.
define('ENABLE_CACHE', true); funktioniert AFAIK nicht mehr.
@MacMacken: der Cache ist seit WP 2.8 immer aktiv, die Konstante ist hinfällig; das Plugin optimiert lediglich das Verhalten des Cache.