Mit steigender Anzahl der Beiträge und auch der Besucher kann es leicht passieren, dass eine herkömmliche Worpressinstallation, die in den meisten Fällen aus Shared-Hosting, dem Apache als Webserver und einer leicht modifizierten htaccess besteht, an ihre Grenzen kommt.
WordPress auf Geschwindigkeit und Last optimieren
Es gibt natürlich mehrere Möglichkeiten, diese Probleme zu beheben. Eine sinnvolle, wie ich finde, stelle ich hier vor. Eine Besonderheit möchte ich jedoch noch vorweg geben: Da ich selbst Plesk zum Verwalten meines Servers nutze, werde ich diesen kleinen Leitfaden auch entsprechend auf die Nutzung mit Plesk ausrichten.
Dort, wo herkömmliches Webspace auf Dauer zu wenig Möglichkeiten der Individualisierung bietet, beginnt ein vServer erst richtig Spaß zu machen. Warum? Das ist ganz einfach. Du hast unzählige Möglichkeiten um auch in den Tiefen des Systems zu schrauben. Aber Achtung: Zieht man eine Schraube zu locker an, kann es natürlich passieren, dass der Server offen wie ein Scheunentor ist.
Aber darum geht es in diesem Artikel nicht.
Wir haben noch immer das Problem, dass unsere Seite zu überlastet ist und deswegen deutliche Performanceprobleme bekommt. Diese werden wir jetzt lösen. Ein paar Schlagworte vorweg: Plesk im Zusammenspiel mit WordPress, dem Webserver Nginx und Memcached. – Auf gehts!
Nginx und Memcached für WordPress nutzen
Auch hier möchte ich wieder vorweg nehmen, dass bei diesem Zusammenspiel bestehende htaccess-Dateien nicht mehr von Nöten sind. Mit diesen kann Nginx nichts mehr anfangen. Um bestehende Permalinkstrukturen weiterhin verwenden zu können, müssen diese in der entsprechenden Konfigurationsdatei konfiguriert werden.
Schritt 1: Herunterladen von Memcached
Unter Debian und anderen Linuxvarianten geht es via SSH folgendermaßen:
apt-get install memcached
Schritt 2: Einloggen bei Plesk und Umstellung auf Nginx
Jetzt rufen wir Plesk auf und loggen uns ein: “<DeineIP:8443>”
Nun wählen wir unsere Domain, die zukünftig unter Nginx laufen soll – Dies geschieht, in dem wir zuerst auf den Punkt “Webhostingeinstellungen”, der direkt neben unserer gewünschten Domain zu finden ist, gehen.
Im nächsten Schritt wählen wir die Unterstützung von FastCGI aus und speichern diese Einstellungen wieder.
Nachdem dies erfolgt ist, gehen wir zurück und klicken diesmal direkt auf unsere gewünschte Domain. So gelangen wir zu den notwendigen Einstellungen, die den Apache für uns in Zukunft unwichtig machen.
Nun sind wir schon einen ganzen Schritt weiter, denn mit diesen Einstellungen geben wir an, dass zukünftig alles über Nginx laufen wird. Dieser schlanke Webserver ist wesentlich performanter als der Apache und dies wirkt sich, gerade bei viel Last, immens auf die Ladezeit aus.
Wir setzen also unser Häkchen bei “Intelligente Bearbeitung von statischen Dateien”, “Statische Dateien direkt durch Nginx bedienen” und zu guter letzt wählen wir auch aus, dass PHP von nun an durch Nginx verarbeitet wird.
Nun können wir theoretisch schon die Einstellungen speichern, doch unser WordPress wird noch nicht lauffähig sein, da unter anderem noch kein Memcached wirklich funktioniert und die Permalinks ebenfalls noch nicht.
Nginx Konfigurationsdatei bearbeiten für WordPress
Um in den Genuss von Memcached zu kommen, benötigen wir zunächst noch ein Plugin, um die Sache zu vereinfachen. Dieses heißt WP-FFPC und kann hier kostenfrei heruntergeladen werden:
Zum PluginDie Einstellungen für das Plugin sind leicht Verständlich und sehen bei mir folgendermaßen aus:
- Select backend: PHP Memcached
- Expiration time (ms) 3000
- Unter Debug & in-depth: Enable logging, Add X-Cache-Engine header, Add HTML debug-comment
- Nun auf Save Setting und unten auf Pre-cache
- Fertig!
Wie schon beschrieben, möchten wir nun, dass WordPress schneller wird, unsere Permalinkstruktor funktioniert, Browser-Caching genutzt wird, gzip aktiv wird etc. Aus diesem Grund bearbeiten wir nun unsere Konfigurationsdatei für Nginx direkt in Plesk. Dort, wo wir eben die drei Häkchen gesetzt haben, ist noch ein leeres Feld namens “Zusätzliche Nginx-Anweisungen. Diese sollten folgendermaßen aussehen:
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
location ~* .(js|css|png|jpg|jpeg|gif|ico|woff|svg)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri @fallback;
}
gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable "MSIE [1-6].(?!.*SV1)";
rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
Der erste Block sorgt dafür, dass unsere Permalinks wieder funktionieren, der zweite Block ist dafür Zuständig, dass Browsercaching möglich ist und setzt ein Ablaufdatum. Achte hierbei unbedingt darauf, dass die aufgelisteten Dateitypen hier in der Konfigurationsdatei und bei dem ausgewählten Punkt mit der Auslieferung der statischen Dateien, nicht doppelt vorkommen.
Zuletzt sorgt der dritte Block für die komprimierte Auslieferung durch gzip. Den vierten Block musste ich dafür nehmen, dass meine Sitemap mit dem SEO Plugin von Yoast wieder funktioniert. Diesen Hinweis bekommst du aber, sofern du auch das Plugin nutzt, direkt in den Einstellungen angezeigt.
Nun müssen wir nur noch die eben gemachten Einstellungen speichern und Nginx wird kurz neu gestartet – Fertig! Die Einstellungen sind übernommen worden und wir nutzen jetzt, wie gewünscht, Nginx in Verbindung mit Memcached.
Ladezeit von WordPress überprüfen
Natürlich möchten wir jetzt sehen, ob die Umstellung auch etwas gebracht hat. Es bietet sich hier an, einen Vorher-Nachher-Vergleich zu machen und die alten und neuen Werte mit tools.pingdom.com zu überprüfen. Dabei wählen wir den Server aus Amsterdam.
Um jetzt auch noch festzustellen, in wie weit sich der Wert bei Google Pagespeed verbessert hat, besuchen wir die Seite https://developers.google.com/speed/pagespeed/insights/
Der Wert sollte sich auch hier um mehrere Punkte verbessert haben :-) Tipps für die Umsetzung der von Google vorgeschlagenen Tipps würden den Rahmen hier sprengen, werden aber noch in einem separaten Artikel näher durchleuchtet.
Kann ich auch W3 Total Cache oder WP Super Cache nehmen?
Möglich ist es sicherlich, aber aus eigener Erfahrung würde ich davon abraten, da der Wert bei mir nur schlechter wurde. Es muss dazu gesagt werden, dass wir aufgrund der Nutzung von Plesk, etwas eingeschränkt sind, was die Optimierung der Konfigurationsdatei von Nginx sind.
Um dort tiefgehend ins System eingreifen zu können, müssen Servertemplates geändert werden. Ich hoffe, dass in naher Zukunft bei einem Update von Plesk diese Funktionen etwas leichter zugänglich sind. Nichts desto trotz sollte unser WordPress nun schneller und belastbarer laufen.
Hallo, das hat mir echt geholfen! ich danke dir für die hilfe.
Ich danke dir, und möchte mich auch rechtherzlich bei dem verfasser dieser website bedanken!
Ihr seit Spitze!