Einblicke in die mobile Performance-Optimierung einer Website

Greifen mobile Geräte auf eine Website zu, stellt das ganz andere Anforderungen als Desktop-Traffic. Wir zeigen, wie sich Requests, Ressourcen und Rendering für mobile Zugriffe optimieren lassen.

13098204424_30deb96c19_oIn diesem Artikel geht es bei «Performance» um die zeitgerechte Auslieferung und Darstellung aller zugehörigen Ressourcen einer Website. Die zusätzliche Einschränkung «mobile» hat deutliche Auswirkungen auf gängige Website-Performance-Indikatoren. Langsame Verbindungen mit hoher Latenzzeit und eingeschränkte Leistung des mobilen Geräts verursachen merkbar langsamere Lade- und Darstellungszeiten.

Vier von fünf Surfern weltweit benutzen ein mobiles Gerät, in Europa zwei von drei. Zudem haben Mobile-Nutzer in der Regel mindestens gleich hohe Erwartungen wie Desktop-Browser. Entsprechende Optimierungen sind deshalb Pflicht. » mehr

WordPress Performance optimieren: Caching

Wenn es um Performance von Content Management Systemen geht, kommt man fast nicht um eine Caching-Lösung: In diesem Beitrag zeigen wir Vorteile und Schwierigkeiten von Caching-Strategien auf.

memcached.orgIn dem Beitrag über Profiling haben wir erklärt, wie eine unperformante Stelle im PHP Skript identifiziert werden kann. Mit einem Tool wie kCacheGrind kann man visuell schnell herausfinden, wie lange Datenbankaufrufe dauern oder wie viele Hooks noch zusätzlich von WordPress im Hintergrund ausgeführt werden. Es können nun mehrere Fälle auftreten, in denen weitere direkte Code-Optimierungen nicht mehr sinnvoll sind. Ein paar Beispiele:

  • Komplexes SQL Statement, welches über JOIN gewisse Resultate liefert, bei dem auch darauf geachtet wird, dass indexiert abgefragt wird.
  • Nicht-triviale Sortierung von Objekten mit Ausnahmen und Hierarchien: Grössere Menüstrukturen, welche beim Seitenaufbau dynamisch generiert werden.
  • Grösseres Datenset: z.B. mehr als 10’000 Kommentare in der Datenbank können komplexe Abfragen um Kommentare erheblich verlangsamen.

» mehr

WordPress Hooks

Hooks – oder allgemeiner Schnittstellen – erlauben dem Entwickler, die Funktionalität und das Aussehen von WordPress zu erweitern. Von Plugins werden Hooks verwendet, um in den WordPress-Kern einzugreifen, jedoch ohne den Quellcode des WordPress-Kerns zu verändern. In Themes werden Hooks eingesetzt um die Darstellung auf der Website zu verändern. Entwickler können Hooks aber auch einsetzen, um Schnittstellen für andere Plugins und Themes anzubieten.

Das Pluginsystem mit Hooks ist vergleichbar mit einem Ereignisbehandlungssystem.Die Bezeichnungen sind aber weniger präzise gehalten. Wir reden nicht von in der Informatik etablierten Begriffen wie Observer, Listener und Event-Dispatching, sondern von Actions, Filter, Hooks und Callbacks. Hooks bezeichnen Ereignisse, bei welchen sich ein Plugin oder ein Theme mit eigenem Code oder Callback-Funktionen «einhängen» kann. Dieses System reagiert aber nicht auf Benutzerereignisse, sondern auf Ereignisse im Verlauf des Seitenaufbaus. Ein gutes Beispiel dazu liefert McCormick & Winter. » mehr

Xdebug und kCacheGrind: PHP-Skripte debuggen und profilieren

Letzten Monat haben wir eine Möglichkeit vorgestellt, wie wir die Auslastung unserer Infrastruktur mittels StatsD überwachen können. Damit aber diese «Large-Scale»- Probleme optimiert werden können, muss die Performance zuerst im einzelnen Seitenaufruf stimmen. Dies können wir im Einzelfall mittels der PHP Erweiterung Xdebug und einem cachegrind Analysetool wie kCacheGrind lösen.

Bei jedem komplexeren Softwareprojekt ist es fundamental wichtig, unerwartete Verhaltensweisen der Anwendung genauer untersuchen, beziehungsweise “debuggen” zu können. Auch bei der Entwicklung mit PHP braucht es öfters die Fähigkeit, das Skript an mehreren Stellen in der Ausführung anzuhalten und verschiedene Abhängigkeiten in der Laufzeitumgebung zu untersuchen. Ein simples var_dump oder echo gibt zu wenig Einblick in die Funktionsweise des Skripts. Die PHP-Erweiterung Xdebug in Kombination mit einer IDE wie NetBeans oder PhpStorm schafft hier Abhilfe. Xdebug ist eine Erweiterung, die es erlaubt PHP-Skripte anzuhalten und genauer zu untersuchen. Ausserdem kann sie einen ganzen Request profilieren, das heisst: alle Funktionsaufrufe nach Performance sortiert zu analysieren. » mehr