Pimp my WordPress

Unser Domspitzen-VServer ist ja in der Tat nicht der Schnellste. Auf jeden Fall ist der Datenbankserver ein eher gemächlicher Zeitgenosse. Kommen dann noch datenbankintensive Plugins dazu, kriegt man gern mal 5 Sekunden Wartezeit auf eine Seite.

Ich habe folgendes versucht, um WordPress schneller zu bekommen:

  • Datenbank (= Artikelbackup) über die WordPress Boardmittel erstellt
  • alte Datenbank komplett gesichert und dann gelöscht
  • Neues WordPress “from Scratch” aufgespielt mit neuer DB
  • die alten Artikel importiert – das hat den Vorteil, dass die Änderungshistorie aus der Datenbank raus ist
  • einen strengen Blick auf die installierten Plugins geworfen und im Zweifel deaktiviert (Google XML Sitemaps war z.B. einer der Bremskandidaten)

Das hat zunächst einen echten Performanceschub gebracht, der aber leider nicht von Dauer war. Schließlich habe ich mich etwas intensiver mit dem Thema WordPress Caching beschäftigt und bin dabei auf das Plugin WP-Supercache gestoßen. Durch das Plugin werden die Artikel- und Inhaltsseiten hart als HTML-Files gecached und statisch ausgeliefert, an Stelle jedes Mal die Datenbank zu fragen.

Das Plugin lässt sich leider nicht einfach aktivieren; sondern man muss vorher diverse Zugriffsrechte ändern und zurückändern, Code in die .htaccess schreiben – aber schließlich lief der Laden.

Nun wird bei jedem erst Zugriff auf einen Artikel/ Seite eine Cache-Version davon angelegt und dem nächsten Besucher statisch ausgeliefert (Ausnahme: Man kommentiert oder ist angemeldet). Bei Blogs mit sehr viel Traffic kann man sich nun zurücklehnen und warten, bis das ganze Blog durchgecached ist. Da ich ein ungeduldiger Mensch bin und nicht so viel Traffic anliegt, habe ich mir fix einen Cache-Trainer gebaut. Dazu benötigt man (Basis: Windows):

  1. Zunächst richtet man das Sitemaps-Plugin ein und erstellt sich eine brandneue XML-Sitemap.
  2. Nun ruft man diese Sitemap im Browser auf: [URL_DES_BLOGS]/sitemap.xml
  3. Den Inhalt der Sitemap kopiert man in Notepad rein und von dort aus in eine leere Excel/Calc-Tabelle (erfahrungsgemäß entfernt das unnütze Steuerzeichen)
  4. Schmeißt die oberen und unteren Zeilen raus, entfernt alle Spalten außer der ersten
  5. Schreibt in die zweite Spalte in die erste Zeile folgende Formel: =VERKETTEN(“wget.exe –spider “;A1) und zieht die Zelle runter bis zur letzten Zeile. Ihr solltet nun in der zweiten Spalte so etwas wie “wget.exe –spider [URL_DER_BLOGARTIKEL]” stehen haben
  6. Kopiert die ganze zweite Spalte und fügt sie im Notepad ein, speichert die Datei als “cachetrainer.bat” (der Name bleibt euch überlassen) in das Installationsverzeichnis von wget
  7. Startet die Batch-Datei aus dem wget-Verzeichnis heraus.

Was nun passiert ist das gleiche, was passieren würde, wenn ihr alle URLs per Hand nacheinander anklicken müsstet. Der Parameter –spider sorgt hier dafür, dass wget die Seiten nicht herunterlädt, sondern lediglich aufruft. Dadurch werden gleichzeitig im WordPress die Cache-Versionen erstellt.

Wenn die Batch-Datei durchgelaufen ist, solltet ihr nahezu alle Seiten und Artikel als gecachte Version liegen haben. Der Performance-Boost dabei ist wirklich sensationell!

Viel Spaß beim Basteln :-)

Tags: , ,