WordPress-Plugin Optimierung


Vor Weihnachten habe ich ein schönes neues Spielzeug für WordPress entdeckt: P3 – Plugin Performance Profiler. Profiler – mein Lieblingsspielzeug. Denn ohne einen vernünftigen Profiler kann man auch nicht vernünftig optimieren. Ok, der P3 ist kein super ausgefeiltes Werkzeug, aber es zeigt für alle installierten Plugins an, wie viel Zeit für deren Ausführung benötigt wurde. Und mit der Information lässt sich schon so einiges anfangen. Vor allem zeigt es nämlich welche Plugins viel zu viel unnötige Rechenzeit beanspruchen, ohne dabei wirklich etwas zu tun.

P3 analysiert wieviel Rechenzeit die aktiven Plugins benötigen

Ein schönes Beispiel dafür: Admin Management Xtended. Das Plugin erweitert einiges im Backend, arbeitet aber auch dann, wenn das Backend gar nicht angezeigt wird. Eine simple Abfrage auf is_admin hat das „Problem“ erledigt (und es scheint auch noch zu funktionieren, aber wirklich getestet habe ich es noch nicht). Ein schönes Beispiel für ein schlecht geschriebenes Plugin (zumindest hinsichtlich der Performance – ansonsten ist es gut). Zu viele Plugins initialisieren immer alles und machen bei jedem Aufruf Berechnungen, Datenbankabfragen usw. – egal ob wirklich nötig oder nicht.

Ein anderes Beispiel ist der WordPress Download Monitor: Das Plugin lädt beim Initialisieren diverse Dinge aus der Datenbank vor – um den späteren Ablauf zu optimieren. An sich nicht unbedingt verkehrt, aber die Datenbankabfragen werden immer gemacht, egal ob sie wirklich benötigt werden, oder nicht. Und das kostet Zeit. Viel Zeit in diesem Fall.

Ein „Problem“ das viele Plugins haben: Sie speichern jede Menge Einstellungen einzeln in der Datenbank. Empfehlenswerter (und schneller) ist es, alle Einstellungen eines Plugins als Array in einem Datenbankeintrag zu speichern (sicherlich gibt es Ausnahmen für diese Regel). Das Laden vieler Einstellungen aus der Datenbank kann sich deutlich auf die Performance auswirken (und ich habe Plugins gesehen mit zig einzeln gespeicherten Optionen gesehen, die alle diese Einstellungen beim Initialisieren in globale Variablen laden um im Folgenden nicht mehr mit get_options zu arbeiten – mal wieder ganz egal ob das Plugin wirklich ausgeführt wird, oder nicht).

Was mir aufgefallen ist, beim Versuch diverse Plugins zu optimieren, es gibt kaum vernünftige Anleitungen, wann ein Plugin genau was machen sollte. Wann sollen welche Hooks registriert werden? Wie ist der genaue Ablauf der Ausführung? Welche Empfehlungen gibt es? Gibt es Performance-Tipps? Alles was ich bisher heruasgefunden habe, musst ich mir mühsam von verschiedenen Stellen zusammensuchen. Darum arbeite ich gerade an einem Artikel darüber – um es selbst zu lernen und das gelernte irgendwo festzuhalten und ggf. so auch weiterzugeben.

Aber wie gesagt – ich arbeite noch daran. Bis dahin spielt mit dem Plugin Performance Profiler herum. Der funktioniert übrigens erst ab WordPress 3.3.


Kommentare sind geschlossen.