Artikelformat

WordPress optimieren: Varnish und mehr

Ich möchte einfach nur mal kurz beschreiben, was ich in den letzten Tagen so alles angestellt habe, um diesen Blog, der mir WordPress betrieben wird, ein wenig mehr Dampf zu geben, denn wie wir alle wissen, ist die Geschwindigkeit nicht nur gut für Google-Ranking und co., nein, viel wichtiger ist die Performance für den Leser, dem eigentlichen Empfänger der Seite. Und mir persönlich als Blogger raubt ein langsamer Blog Nerven und den Spaß am Schreiben.

Bildschirmfoto 2011-01-16 um 14.14.16.jpg

Dieser Artikel geht aber nicht unbedingt ins kleinste Detail. Ich versuche nur einige Dinge zusammenzufassen. Eventuell findet ja jemand den einen oder anderen Tipp oder kann sogar noch etwas dazu beitragen.

Bevor man mit komplexen Methoden wie Caching und co. anfängt, sollte man erst einmal die eigentlich Webseite schlank halten und in meinen Fall die Seite aufräumen und entschlacken. Das wichtigste, was einem schnell bewusst werden muss, ist die Tatsache, dass es nicht die „Performance-Lösung“ gibt, sondern das die Geschwindigkeit von Webseiten durch sehr viele einzelnen Komponenten beeinflusst wird und man an sehr viele Schrauben drehen kann und muss.

Unter Aufräumen verstehe ich zum Beispiel:

  • Entfernen von unnützen und nicht mehr gebrauchten Plugins: es sammeln sich doch im Laufe eines WordPress-Lebens zahlreiche Plugins an, die man eventuell schon längst nicht mehr benuzt. Viele Plugins bringen eigene CSS und Javascript Dateien mit, die immer bei jedem Aufruf geladen werden. Ich habe das auch getan und so ca. 20 Plugins entfernt.
  • das benutzte Theme aktualisieren: auch das benutzte Theme sollte man auf Updates überprüfen
  • Datenbank optimieren: auch die Datenbank, meisten MySQL, so auch in meinem Fall, kann durch diverse Parameter auf Performance getrimmt werden – ein Tool, welches die MySQL DB testen und danach Tipps gibt ist: mysqltuner siehe http://blog.mysqltuner.com/

Bildschirmfoto 2011-01-15 um 18.00.12.jpg

  • HTTP Request verringern: je mehr Plugins man in WordPress verwendet, um so mehr CSS und Javascript Dateien werden einzeln geladen, warum da nicht alle CSS- und Javascript-dateien zu einem File bzw. wenigen zu kombinieren – es gibt zwar ein paar WP-Plugins, die einem da unter die Arme greifen. So richtig rund lief aber keins. Daher auch keine Empfehlung.
  • Bildergrößen optimieren: Bilder sind meistens der dickste Teil einer Webseite – auch bei uns. Eine Möglichkeit ist zB. die smush.it API zu nutzen um Bilder nachträglich ohne großen Qualitätsverlust (entfernen der JPEG Meta Daten, …) zu verkleinern. Folgendes WP Plugin automatisiert diesen Prozess. http://dialect.ca/code/wp-smushit/
  • Hilfreich sind darüber hinaus Tools wie YSlow, Page-Speed von Google bzw. Firebug oder die eingebauten Entwicklertools in Safari oder Chrome. Onlinetesttools findet man unter: http://tools.pingdom.com/ oder http://www.webpagetest.org/ .

Bildschirmfoto 2011-01-16 um 13.35.09.jpg

Es gibt mit Sicherheit noch viel mehr Möglichkeiten. Nutzt doch die Kommentarfunktion für eure Tipps rund um Optimierung von Webseiten insbesondere WordPress. Ich bin noch längst nicht am Ende damit. Werde mir in Zukunft auch sehr genau überlegen, welche Plugins installiert werden und welche nicht.

Varnish – Caching und mehr

Seit einiger Zeit erzeugen kurzfristige Zugriffspitzen hier im Blog eine dermaßen große CPU-Last, dass man teilweise überhaupt nicht mehr zugreifen und die Seite als „down“ bezeichnen konnte. Speicher ist bei meiner Seite nicht das Problem. Zwei Dualcore Xeon CPUs sollten auch eigentlich ausreichen. Das CPU-intensive Erzeugen der dynamischen Seiten mittels PHP schaukelte die Last dermaßen auf, bis gar nichts mehr ging.

Lösung: Caching?!

Unter Caching versteht man das Abspeichern der dynamisch-erzeugten PHP-Seiten als statische HTML-Seiten, die dann sehr schnell geladen werden können, ohne dass die CPU zu sehr belastet wird. In diesem Zusammenhang wird oft das WordPress Plugin: WP Super Cache und der WordPress-eigene Cache empfohlen, welche auch prima bis zu einer bestimmten Seitengröße funktionieren.

Hat man aber vollen Zugriff auf seinem Server, kann man auch zu anderen Mitteln greifen – zum Beispiel: Varnish. Dieser Webbeschleuniger ist eine Art Proxy für dynamische Webseiten, konzipiert für Seiten mit viel Inhalt und wird vor dem eigentlichen Server (Apache, Nginx) geschaltet. Einen sehr guten Überblick über die verschiedenen Caching-Lösungen gibt dieser Benchmark-Artikel.

Die Installation ist recht einfach und kann mittels ein paar Befehlen unter Debian ausgeführt werden: apt-get install varnish . Fertige Pakete gibt es auch für FreeBSD, RedHat und mehr.

Die Konfiguration erfordert dann aber ein wenig mehr Einarbeitung in die Varnish Configuration Language (VCL), mit der man festlegen kann, was und wie gecacht werden soll. Eine recht brauchbare VCL für WordPress findet man hier. (Danke!) Diese kann man seinen eigene Bedürfnissen anpassen.

Varnish bringt darüber hinaus ein paar interessante Konsolentools mit:

Bildschirmfoto 2011-01-16 um 14.22.17.jpg

varnishhist – ein Histogram der Cache Treffer, varnishlog – LiveLog, varnishstat – umfangreiche Statistiken und varnishtop – Anzeige der Prozesse innerhalb von varnish

Varnish kann man auch für Loadbalancing und weiteren interessanten Konfigurationen benutzt werden.

Ein wichtiger Befehl im Zusammenhang mit Varnish ist die Möglichkeit bestimmte Elemente kurzfristig und schnell aus dem Cache zu löschen. Hier benutzt man das Administrationsschnittstelle von varnish mittels varnishadm. Beispiel: „varnishadm -T localhost:6082 purge.url http://www.aptgetupdate.de/feed/“ löscht den generierten RSS-Feed und legt den aktualisierten Feed beim nächstem Aufruf neu in den Cache. Das WordPress Plugin wp-varnish ermöglicht das Löschen des Caches aus dem WordPress-Backend heraus.

Ich persönlich finde, der Einsatz von Varnish hat sich schon gelohnt. Die Verbesserung sind deutlich spürbar, sowohl auf der Serverseite, wo die CPU-Last kaum noch spürbar ist, auch nicht wenn die gleichzeitigen Zugriffszahlen in die Höhe steigen, als auch direkt am Browser.

Frage an die WordPressbetreiber: Setzt ihr auch auf Caching? Welche Software, welche Lösung würdet ihr empfehlen?

Autor: Oliver

Ich bin Oliver und habe den aptgetupdateDE Blog im Juli 2007 aus der Taufe gehoben. Man findet mich auch auf Twitter.

22 Kommentare