06 November 2014 ~ Autor: Tobias Karnetzke

Leitfaden: Langsamen WordPress Ladezeiten auf den Grund gehen

Die WordPress Spezialisten

Wer kennt das nicht? Der Blog oder die Website bekommt ein neues Theme und ein paar neue tolle Funktionen und schon wundert man sich über lange extrem lange Ladezeiten. Auf dem Entwicklungsserver hat noch alles wunderbar funktioniert und nach der Aktivierung der Site bricht kurze Zeit später alles zusammen.

Wenn die Seite erst einmal online ist und auf einmal Ladezeiten von vielen Sekunden auftreten, dann ist mit ziemlicher Sicherheit etwas faul und guter Rat teuer. Wenn das passiert, dann liegt das oftmals an einer schlechten Programmierung des Themes oder an den verwendeten Plugins. Sicherlich hat man nun erst einmal die Möglichkeit ein Cache-Plugin zu installieren und den Quellcode (CSS, HTML, Javascript) durch Plugins optimieren zu lassen, falls das nicht bereits geschehen ist. Allerdings reicht auch das nicht immer aus. Zudem ist es „falsch herum“ gedacht. Warum? Man sollte nicht die Auswirkung bekämpfen, sondern die Ursache!

Klar ist es empfehlenswert alle wichtigen und nützlichen Performance-Optimierungen durch Plugins vornehmen zu lassen. Trotzdem sollte man sich primär damit beschäftigen, warum die Site nun überhaupt so langsam ist. Hat man die Ursache dafür ermittelt, gilt es Lösungen zu finden und umzusetzen.

Meistens verursachen schlecht programmierte Plugins oder Themes Performanceprobleme!

Anzahl der Datenbankabfragen und Ladezeiten ermitteln

Oftmals sind zu viele Datenbankabfragen (queries) pro Seitenaufruf schuld an zu langen Ladezeiten. Wenn nach der Aktivierung eines Themes oder Plugins Performanceprobleme auftreten, dann sollte man prüfen, wie viele Datenbankabfragen eigentlich pro vom Server ausgelieferter Seite erzeugt werden. Ich habe schon Seiten gesehen, die pro Seitenaufruf über 400! Datenbankabfragen erzeugten. Das ist viel zu viel. Bei 10 gleichzeitigen Besuchern (das sind nicht mal viele), sind das dann schon gleich 4000 Abfragen. Es sollten lediglich (bis auf Ausnahmen und je nach Verwendung der Site) weit unter 100 Abfragen pro Seitenaufruf stattfinden. Klar erzeugen manche Seiten mehr, andere weniger Abfragen. Das liegt nicht nur am Theme, sondern auch an den eingesetzten Funktionen und Plugins.

Mit folgendem Befehl könnt ihr euch die Abfragen im Quellcode als Kommentar ausgeben lassen:
echo '<!--' . get_num_queries().' Abfragen in '.timer_stop(1).' Sekunden! -->';

Die integrierte  Timerausgabe „timer_stop(1)“ gibt euch aus, wie lange die Verarbeitungszeit der aufgerufenen Seite bis zu diesem Punkt im Quellcode andauerte. Es ist also nicht nur möglich zu ermitteln, wieviele Datenbankabfragen bis zu einer bestimmten Stelle im Quellcode erfolgten, sondern auch, wie lange die Verarbeitung bis zu diesem Punkt andauerte. Wenn du diesen Code nun in die header.php, einmal an den Anfang und einmal ans Ende einfügst, kannst du bereits ermitteln, wieviele Anfragen alleine im Head-Bereich durchgeführt wurden und viel lange die Verarbeitung dauerte. Wenn du dies nun auch in der index.php, page.php, footer.php etc. am Anfang und Ende einfügst, bekommst du schnell einen Überblick, ob zu viele Abfragen erzeugt werden und wenn ja bei welchem Teil/Template diese erfolgen.

Wenn du zu viele Datenbankabfragen ermittelt hast, dann gilt es zu ermitteln, welche Plugins oder wo im Theme diese generiert werden. Du kannst nun im „trüben fischen“ und nach und nach alle Plugins deinstallieren und immer wieder im Quellcode schauen, ob sich die Situation an Abfragen und Ladezeiten dadurch verbessern.  Möglich ist es auch, als erste Maßnahme kurzzeitig ein WordPress-Basis-Theme zu installieren und die Ausgabe der Abfragen dort ebenfalls testweise zu integrieren. Ist die Situation mit diesem Theme nicht mehr alarmierend, dann liegt das Problem an deinem Theme und du kannst dort weiter nachforschen. Andernfalls ist mit großer Wahrscheinlichkeit ein Plugins (oder mehrere) für die vielen Abfragen verantwortlich.  Ich hatte auch schon den Fall, dass ein Plugin, welches die Seitennavigation in Archiven/Kategorien am Seitenende erzeugte, auch gleich pro Seitenaufruf mehrere hundert Datenbankbfragen erzeugte. Nach der Deaktivierung verbesserte sich die Situation erheblich.

WordPress-Datenbankabfragen per Plugin analysieren

Query Monitor PluginWer nicht „im trüben fischen“ möchte, kann sich auch ein Analyse-Plugin installieren. Mittlerweile gibt es eine Reihe von Plugins, die genau für solche Probleme entwickelt wurden. Sie können dem Entwickler sehr viel Arbeit ersparen und bieten umfassende Performance-Analysemöglichkeiten. Ich verwende derzeit sehr gerne das Plugin Query Monitor. Hat man dieses installiert und aktiviert, dann stellt es einem unzählige Informationen im Kopfmenü (Bild links) zur Verfügung. Allerdings muss man sich hiermit etwas mehr beschäftigen, wenn man die Fülle der Informationen richtig einordnen und interpretieren können möchte. Die Analysemöglichkeiten sind enorm. Es werden nicht nur die Werte zu Datenbankafragen lesbar aufbereitet, sondern auch die durchgeführten Requests, der Speicherverbrauch uvm. kann analysiert werden. Sicherlich ist das Plugin ein hilfreiches Tool für jeden WordPress-Entwickler. Alternativ gibt es von Frank auch das Plugin Debug Queries, welches zwar etwas weniger Auswertungsmöglichkeiten hat, aber auch empfohlen werden kann.

Extra Tipp für Shared-Hosting Nutzer

Beim Shares-Hosting teilt ihr euch einen Server mit weiteren Kunden des Hosters. Das betrifft sowohl des Webspace, als auch den Server für die Datenbank. Bei manchen Hostern befindet sich die Datenbank auf einem anderen Server als der Webspace. Wenn ihr Pech habt und eure Datenbank auf einem Server liegt, der durch andere Kunden stark belastet oder sogar überlastet wird, dann bremsen diese Kunde euch unter Umständen mit aus. Bei manchen Hostern werden die Datenbanken beim Anlegen auf unterschiedlichen Servern abgelegt. Dies muss ist nicht immer der gleiche Server sein. Daher kann es sich also schon mal lohnen, einfach mal eine neue Datenbank anzulegen und die Site dann damit zu testen. Diesen Fall hatte ich persönlich schon mit einem Blog. Nachdem alle Optimierungen und Analysen gemacht waren, versuchte ich diesen Trick mit der Datenbank und der Blog lief danach wieder ohne Probleme.

Kontaktiere mich als WordPress Entwickler für dein Projekt!

Dein Name (Pflichtfeld)

Deine E-Mail-Adresse (Pflichtfeld)

Deine Nachricht (Pflichtfeld)

Datenschutzhinweis: Deine hier eingetragenen Daten werden selbstverständlich nur zum Zweck der Kontaktaufnahme verwendet und nicht an Dritte weitergegeben.


Der Blogmal WordPress-Newsletter

Der Blogmal WordPress Newsletter Interessante Artikel, Tipps und Tricks aus der WordPress-Szene: Abonniere den Newsletter und erhalte zukünftig aktuelle Informationen rund um WordPress und die Bloggerwelt direkt per E-Mail:

Ein Kommentar zu “Leitfaden: Langsamen WordPress Ladezeiten auf den Grund gehen”

  1. Philipp P. 26 Juli 2015 at 12:32 Permalink

    Danke für diesen hilfreichen Beitrag. Ich wollte wissen, wie lang der Zugriff auf meine Seite dauert und wie viele Anfragen damit zusammenhängen und besser als hier, hätte ich gar keine Hilfe bekommen können. Vielen Dank für ihre gute Arbeit!


Kommentieren

Der Autor

Erfolgreich BloggenMein Name ist Tobias Karnetzke, ich bin Blogger aus Leidenschaft und seit 2004 selbständiger Programmierer und Webentwickler.

Über Blogmal

Auf Blogmal schreibe ich über meine langjährige Erfahrung als Webentwickler, WordPress Spezialist und Blogger. Diese Erfahrungen möchte ich gerne teilen und mit euch diskutieren, wie man einen Blog verbessern und erfolgreicher machen kann.