WordPress cachen – einfach und effizient

Immer wieder habe ich mich über Caching-Lösungen für WordPress geärgert. Das ging soweit, dass der Platzhirsch W3 Total Cache meine Seiten deutlich langsamer machte. Unzählige Strategien und Einstellungsmöglichkeiten machen dieses Plugin-Ungetüm unnütz kompliziert. Dabei sind die Anforderungen an kleinere Blogs mit wenigen Artikel und Kommentaren recht übersichtlich:

  • Seite nach der Generierung als fertiges HTML in Cache-Verzeichnis speichern
  • Durch .htaccess statische Seite aus Cache-Verzeichnis vorziehen
  • Bei Kommentar oder Administrationsaktivität das Cache-Verzeichnis leeren


Dieser Ansatz ist absolut simpel und sorgt auf Seiten mit wenig Interaktion für große Entlastung. Erst kürzlich habe ich mich mit Georg darüber unterhalten und schon am selben Abend hat er das Ganze in ein Plugin gegossen. Dieses findet sich bei Github.

Installation in einem apache-basierten WordPress

Auf das WordPress-Plugin-Repository hatte er verständlicherweise keine Lust (SVN und so…), die Installation ist dennoch recht simpel, vor allem wenn man einen Apache auf einem Linuxserver verwendet. Nach dem Öffnen des Seitenverzeichnisses via SSH auf dem Server sollte die folgende Zeile den Großteil der Arbeit erledigen:

echo -e "RewriteEngine On\nRewriteCond %{DOCUMENT_ROOT}/static/$0/index.html -f\nRewriteRule ^(.*)$ static/$1/index.html [L]\n\n$(cat .htaccess)" > .htaccess && cd wp-content/plugins/ && wget https://raw.github.com/MGVmedia/staticly/master/staticly.php

Dies erweitert die .htaccess-Datei im aktuellen Verzeichnis und lädt das Plugin in das Plugin-Verzeichnis. Anschließend muss es im WordPress-Backend aktiviert werden. Spätestens ab dem zweiten Aufruf der gleichen Seite sollte man nun einen deutlichen Geschwindigkeitszuwachs spüren.

Testphase

Die Idee ist simpel und kommt ohne viel Code aus. Ob wirklich alle Fälle bedacht und abgedeckt sind kann niemand garantieren. Die Seiten sind erreichbar, auch Kommentare funktionieren.

Navigiert man angemeldet durch die eigene Seite, fehlt aber beispielsweise die dunkle die Admin-Leiste. Auch einige Widgets wie die OSBN-Artikelliste werden nicht mehr regelmäßig aktualisiert.

Empfehlenswert ist das Plugin daher für diejenigen, die sich mit ihrem WordPress einigermaßen auskennen und Spaß am Experimentieren haben.

7 Kommentare

  1. Das ist echt eine super Idee. Kannst du mal veröffentlichen, wie viel CPU-Last du damit einsparst? Oder wie lange das Rendern der Seite dauert?

  2. Habe hier leider nichts zum Messen. Aber es ergibt sich ja auch: Ist die Seite nicht im Cache verändert sich nichts. Ist sie im Cache, muss der Webserver eine statische Datei ausliefern: Keine Renderzeit und minimale CPU-Last.

    Wie oft der Cache geleert werden muss hängt von der Seite ab. Bei mir ist momentan nicht viel los (kaum Artikel, ebenso wenig Kommentare), da würde ich auf durchschnittlich alle 3 Tage tippen.

  3. php-apc läuft hier auf dem Server. Viel bringt das aber nicht. WordPress ist so dynamisch aufgebaut, dass dieser Byte-Code-Cache da nicht die Geschwindigkeiten raus holt.

    Mit dem Plugin wird von jeder Seite eine statische Kopie abgelegt, was die Sache enorm beschleunigt.

  4. Sieht auf jeden Fall interessant aus.

    Das Plugin setzt auf die ob_* -Methoden von PHP, also auf den integrierten Ausgabepuffer. Das Problem dabei ist, dass ein weiteres Plugin dieses Verhalten im schlimmsten Fall wieder verändern kann. Dies geschieht zum Beispiel, wenn ein anderes Plugin den Ausgabepuffer nutzt und ihn dann abschaltet. Aber ich werde damit noch mal rumprobieren.

    Ansonsten ist die HDD-Methode des Plugins so ähnlich, wie mein Ansatz.

Kommentare sind geschlossen.