Pimp My Wordpress - Caching mit Redis

Klar ist: Ladezeiten einer Webseite sind wichtig und ein Caching-System kann diese deutlich verbessern. Für Wordpress gibt es viele teils sehr aufwändige Plugins. Ich habe mir diverse angesehen und festgestellt, dass die "Großen" mich nicht wirklich überzeugt haben. Da ich auf meinem Server sowieso schon Redis installiert haben und auch für eigene Projekte teilweise eine Redis Datenbank zum cachen verwende habe ich mich mal in dieser Richtung umgesehen und auch einige interessante Ansätze gefunden.

Leztendlich habe ich mir für den php-redis-controller entschieden. Die Lösung ist simpel und elegant: Der Output der einzelnen Wordpress-Seiten wird mittels PHP Output-Buffering "abgefangen" und in einer Redis-Datenbank gespeichert. Ist eine Seite im Cache wird der komplett gerenderte HTML-Quelltext aus der Redis-DB ausgelesen und ausgegeben. So wird der zu parsende PHP-Code auf ein Minimum reduziert und MySQL-Queries sind im optimalfall überhaupt nicht notwendig.

Ein paar weitere nette Features:

  • Wird z.B. ein Kommentar geschrieben wird der entsprechende Cache neu generiert.
  • Über einen GET-Parameter kann der Cache manuell geleert werden.
  • Der Cache-Zeitraum ist einstellbar.
  • In der Config kann das Caching für bestimmte Query-Strings oder Cookies dektiviert werden.

Auch die Einrichtung ist denkbar einfach:

  • Neben dem Redis Server selbst wird noch PhpRedis vorrausgesetzt. (Die Installation ist auf der Projektseite erklärt.)
  • Anschließend werden die php-redis-conroller Dateien (incl. eines Wordpress Plugins) auf den Webserver geladen.
  • Abschließend wird folgender Code in die index.php der Wordpress Installation eingefügt:
    define("REDIS", true);
    require_once("rcc-wordpress-config.php");
    require_once("redis_cache_controller/loader.php");

    Tipp: Sollte es sich um eine WPMU Installation handeln, den Code ggf. nur abhänging von der jeweiligen Domain ausführen!

Damit ist die Einrichtung abgeschlossen. Es loht sich allerdings noch ein Blick in die "rrc-wordpress-config.php" um ggf. einige Einstellungen anzupassen.

Ich werde diese Lösung nun mal ein paar Wochen testen und schauen ob alles rund läuft. Bis jetzt allerdings: Klarer Tipp! Daumen hoch und Dank an die Autoren!