Webprojekte optimieren: Yahoo’s best practises und andere Tipps
André | 5. April 2008Speziell Web-TV-Anbieter wie Youtube, Veoh, Sevenload, Hobnox etc. verursachen natürlich den allergrößten Teil ihres Traffics – und somit ihrer Kosten – mit der Videoauslieferung. Ferner sind die komplexesten Entwicklungsarbeiten an größeren Portalen nicht Frontend- sondern Backendtechnologie (also PHP, Java etc. und nicht HTML/CSS).
Hieraus nun abzuleiten, dass man sich bei der Optimierung des Projektes zur Verbesserung der User experience auf diese Backendsysteme konzentrieren sollte, wäre aber grundfalsch. So gehen z.B. die Entwickler bei Yahoo davon aus, dass 80% der Wartezeit des Nutzers durch die Frontendfunktionen bedingt sind. Entsprechend sieht deren Empfehlung aus: “optimize front-end performance first, that’s where 80% or more of the end-user response time is spent.
Yahoo hat auf seinen Developerseiten dazu eine sehr nützliche Liste von potentiellen Problematiken mit Handlungsempfehlungen veröffentlicht – die m.E. eine Pflichtlektüre für jeden darstellt, der die dem Thema annähern will.
Ergänzend sehr informativ sind die Slides aus der Präsentation von Stoyan Stefanov auf der PHP Quebec Conference in Montreal.
Sehr zentral bei der Optimierung ist augenscheinlich die Anahl der HTTP-Requests, da im HTTP-Protokoll eine Begrenzung eingebaut ist: Das gemäß RFC 2616 (HTTP 1.1) definierte Protokoll erlaubt dem Browser nur maximal 2 parallele Verbindungen zu einem Server bzw. Host. Somit müssen also alle Daten (ob nun Bilder, Videos, Stylesheets, HTML etc) durch dieses Nadelohr – was bei komplexeren Seiten mit vielen Bildern, Stylesheets und ggf. eingebetteter Flash-Assets zu einer erheblichen Wartezeit für den Nutzer führen kann.
Dieser Herausforderung kann man recht einfach begegnen, in dem man verschiedene Dateitypen (z.B. Templates, CSS, Scriptcodes, Bilder, Flash, Videos etc.) von unterschiedlichen Servern ausliefern lässt. Hiermit schlägt man potentiell “2 Fliegen mit einer Klappe”:
- die entstehende Last kann zwischen den Maschinen verteilt werden und es kann zielgerichtet in den jeweiligen Serverpools optimiert und skaliert werden (mit den entsprechenden Vorteilen der Vereinfachung: so muss z.B. ein Server, der ausschließlich statische Bilder ausliefert, nur für viele parallele Requests auf kleine Dateien optimiert werden und kann z.B. mit dem speicherschonenden lighttpd statt mit dem Apache Webserver betrieben werden)
- die Anzahl der maximalen parallelen Requests wird aus Sicht des Users vervielfacht (s.o. – jeweils 2 Requests pro Host, was dann beispielhaft so aussehen könnte: 2 Req. an css.webtvblog.de, 2 Req. an javascript.webtvblog.de, 2 Req. an flash.webtvblog.de, 2 Req. an images.webtvblog.de etc. pp.). So kann die meist vorhandene schnelle Internetverbindung des Nutzers (ob DSL oder Kabel…) voll genutzt und Ladezeiten erheblich verkürzt werden.
Dies kann im übrigen auch bei kleineren Installationen (also ohne Servercluster, ohne Loadbalancer etc.) mit virtual Hosts bzw. virtual machines auf einem Rechner erfolgen und so den User noch zufriedener machen





