Jeder der im Netz surft kennt die Situation. Man ruft eine Webseite auf und dann passiert nix. Ist die Webseite endlich geladen traut man sich kaum einen Link aufzurufen und es vergehen endlose Sekunden bis man wieder etwas zu lesen bekommt.  Genau, die Webseite leidet unter den Massen von Besuchern. So kann es gehen wenn man unerwartet von großen Blogs oder Newsseiten verlinkt wird.  Ein spontaner Umzug auf einen leistungsfähigeren Server ist meist nicht möglich, zumindest nicht in dem benötigten Zeitrahmen.
Das ist die Stunde der Cache-Plugins. Glücklich ist, wer sich schon im Vorfeld ein paar Gedanken gemacht hat. Eines der fraglichen Plugins möchte ich euch heute kurz vorstellen. W3 Total Cache ist mehr als nur ein Cache und bietet eine ganze Reihe von Möglichkeiten das WordPress-Blog zu optimieren.
Was kann das Plugin:
- Page Caching – Die Webseiten selber wird zwischengespeichert und auf Wunsch komprimiert (gzip/deflate oder beides
- Database Caching – Cachen von Datenbankzugriffen
- Minify – Komprimierung und Zusammenfassung von JS / CSS und HTML
- CDN – Auslagerung der Medienbibliothek, des aktiven Themen-Dateien, der Minify-Daten  auf einen CDN Server.
- unterstützt Memcached, alternativer PHP Cache (APC) oder Disk
- Mindestens 10-fache Verbesserung der Website-Leistung (wenn vollständig konfiguriert)
- geringere Ladezeiten und damit höhere Verweildauer der Besucher
- optimiertes progressives Rendering (Seiten erscheinen sofort)
- Bis zu 80% Bandbreiten Einsparung durch minify und HTTP-Komprimierung von HTML, CSS, JavaScript und RSS-Feeds
Page Caching
Das Page Caching soll eines der größten Probleme dynamisch erzeugten Seiten abmildern. Jede Seite die abgerufen wird muss vom Server erst generiert werden. Das kann bei einem überlasteten Server schnell zu einem Problem werden. Hier liefert das Plugin die Lösung. Eine zuvor generierte Seite wird zwischengespeichert und bei Bedarf ausgeliefert.  Jedoch ist hier Vorsicht geboten. Ein Vorteil ergibt sich nur wenn die Webseite wirklich mehrmals innerhalb der Cache-Zeit abgerufen wird. Ansonsten wird mehr Zeit für das Erstellen des Caches verbraucht als beim Abrufen eingespart.
Database Caching
Zum Datenbank Cache gibt es eigentlich nicht viel zu sagen. Standardmäßig werden Datenbankabfragen für 180 Sekunden zwischen gespeichert. Das kann den Zugriff auf die Datenbank deutlich reduzieren. Bevor man jedoch hier Hand anlegt, sollte man natürlich versuchen den mySQL-Server an sich zu optimieren (wenn möglich).
Minify
Eine wirklich sinnvolle Erweiterung ist die Minify-Funktion. Hier können mehrere CSS oder JS – Dateien zusammen gefasst und komprimiert werden.  Das spart HTTP-Requests und damit Overhead ein. Auch das komprimieren der Dateien(löschen von Kommentaren, Leerzeichen und anderen Formatierungen) bringt eine Verkürzung der Ladezeit. Aber Vorsicht ! Bitte unbedingt testen ob das Layout noch stimmt und die JS-Scripte noch funktionieren. Schon kleine Fehler, wie ein vergessenes Semikolon, führen nach der Komprimierung unweigerlich zu Fehlern !
CDN – Content Distribution Network
Die CDN-Funktion ist für mich eine der interessantesten Möglichkeiten, einfach und effektiv den eigenen Server zu entlasten.  Aber was macht dieses CDN eigentlich ? Die Antwort daruf ist einfach wie genial. Das Plugin lagert statische Inhalte einfach auf einen anderen Server aus. Das kann Amazon’s S3, Amazon CloudFront oder ein eigener Webserver sein.
Warum Du den Conntent auslagern solltest kannst Du unter anderem in einem älteren Beitrag „12 einfache Tipps um die Ladezeit Ihrer Webseite zu optimieren“ nachlesen. So kümmert sich ein Webserver um den dynamischen Inhalt und der CDN-Server liefert die statischen Inhalte dazu. Der Benutzer muss sich dabei um nichts kümmern. Das Plugin ladet selbständig die Inhalte auf den CDN. Auch die minimierten Dateien (Minify) können auf den CDN ausgelagert werden.
TIPP: der CDN-Server kann speziell auf das Ausliefern von statischen Inhalten optimiert werden. So bieten sich hier auch die schnellen und kleinen Alternativen zu Apache an. (thttpd, Hiawatha, Lighttpd,…)
Welche Caching Methode ist eigentlich die beste ?
Die Frage kann ich leider so einfach nicht beantworten.  APC scheint aber für kleine Projekte besser geeignet und auch schneller. Memcache spielt seine Stärken erst im Verbund mit mehreren Servern so richtig aus. Für alle die keine der beiden Caching-Methoden verwenden können bleibt natürlich der Disk-Cache. Dieser ist aber deutlich langsamer.
Das Installieren von APC geht unter Debian wie gewohnt, einfach (als root):
apt-get install php-apc
Eine Konfiguration ist nicht notwendig kann aber unter
/etc/php5/conf.d/apc.ini
durchgeführt werden.
Fazit
Auch, wenn ich die versprochene Leistungssteigerung, nicht so extrem ausfällt wie uns die Entwickler versprechen, ist dieses Cache-Plugin das Beste was ich bisher getestet habe.
Update:
Ich glaube APC führt in meinem Blog zu merkwürdigen Effekten. Es werden falsche Seiten ausgeliefert. Ich habe daher mal auf memcached umgestellt.
Urgs O.o Ganz schön krankes Zeugs hier, mutig so was einzustellen! Ich würd mich das nicht trauen…
krankes Zeug, wo ?
Ist euch aufgefallen das Kommentar-Links nofollow sind ?
Also ich habe das WP-Plugin w3tc nach 7 Tagen intensiven Tests mit memcached und APC wieder gelöscht. Die Seiten wurden, gerade mit memcached im request , ca. 2 sec langsamer. APC habe ich jetzt nur im Forum an. APC mit w3tc liefert allerdings etwas bessere Werte als memcached (3.1.9). Nur w3tc bremst insgesamt eher bei caching, wenn man genauer hinschaut.
Jetzt versuche ich es doch mal lieber mit WP Supercache. :)
tja, was soll ich sagen: zur Zeit ist bei mir gar kein Cache aktive. Für alle Fälle hab ich Quick Cache installiert, aber nicht aktiviert.
Bin ich auch am überlegen. Nur beim Forum läuft noch APC ganz gut. :)
ich habe xCache mit 64MB am laufen, und werde die Tage noch einmal versuchen die css und jar Files zusammen zu fassen.
Am meisten bremst bei mir sowieso der externe Content (Gravatar, Werbung & die Social-Button)