Mehr WordPress Speed durch Redis-Caching

WordPress ist schon längst nicht mehr als reine Blogging-Software zu betrachten und wird auch immer öfter als echtes Content Management System eingesetzt. Einige der von LAMP solutions betreuten WordPress Systeme schaffen es da nicht selten auf 10.000 oder mehr Einträge. Wie man die dabei entstehenden Performance-Probleme umgeht, wird im heutigen Beitrag beschrieben.

Es gibt viele WordPress-Plugins die schnelles Caching versprechen. Der Ansatz dieser Plugins beschränkt sich meistens darin die WordPress-Inhalte als statische HTML-Dateien auszulagern.

Das entlastet zwar die Datenbank, reduziert aber nicht die Zugriffe auf die Festplatte. Und gerade die sind bei stark frequentierten Servern ein Nadelöhr. Auch darf man nicht vergessen, dass beim Einsatz solcher Caching Plugins die Pflege bestehender Artikel mitunter etwas frustrierend werden kann, da der Cache nicht schnell genug aufgefrischt wird.

Mit einer auf dem Webserver installierten Redis-Datenbank und dem Plugin Redis-Object-Cache können Teile der Bloginhalte im Arbeitsspeicher des Server abgelegt werden, wodurch der Webserver dieses ohne jegliche Verluste durch Festplattenzugriffe ausgeben kann.

Redis ist eine schlanke In-Memory-Datenbank die sehr schnelle Zugriffe auf die enthaltenen Datensätze erlaubt. Nach der Installation der Datenbank sollte der Zugriff auf sie am besten an Localhost (127.0.0.1) gebunden werden, damit diese von unberechtigten Zugriffen von außen geschützt ist.

Nach der Installation des Plugins Redis-Object-Cache muss der Cache in der Plugin-Einstellungen lediglich aktiviert werden.

Den Erfolg kann man mit der Ausgabe von  auf der Kommandozeile beobachten:

redis-cli monitor
OK
1448034040.223065 [0 127.0.0.1:46452] "GET" "wp_:default:is_blog_installed"
1448034040.224996 [0 127.0.0.1:46452] "GET" "wp_:options:notoptions"
1448034040.225110 [0 127.0.0.1:46452] "GET" "wp_:options:alloptions"
1448034040.225282 [0 127.0.0.1:46452] "GET" "wp_site-options:0:notoptions"
1448034040.236485 [0 127.0.0.1:46452] "GET" "wp_:transient:doing_cron"
1448034040.236731 [0 127.0.0.1:46452] "GET" "wp_:options:rewrite_rules"
1448034040.237013 [0 127.0.0.1:46452] "SET" "wp_:options:notoptions" "a:13:{s:24:\"theme_mods_twentyfifteen\";b:1;s:13:\"current_theme\";b:1;s:19:\"mods_Twenty Fifteen\";b:1;s:12:\"widget_pages\";b:1;s:15:\"widget_calendar\";b:1;s:16:\"widget_tag_cloud\";b:1;s:15:\"widget_nav_menu\";b:1;s:14:\"theme_switched\";b:1;s:11:\"db_upgraded\";b:1;s:21:\"dismissed_update_core\";b:1;s:9:\"site_icon\";b:1;s:23:\"auto_core_update_failed\";b:1;s:13:\"rewrite_rules\";b:1;}"
1448034040.237960 [0 127.0.0.1:46452] "GET" "wp_:posts:1"
1448034040.238226 [0 127.0.0.1:46452] "EXISTS" "wp_:posts:1"
1448034040.238290 [0 127.0.0.1:46452] "SET" "wp_:posts:1

Die Auslieferungszeit einer Webseite die aus Redis ausgegeben wird, kann so um mehr als 50% verringert werden.

Related Posts

Leave a reply