MXHR - Webseiten in einem Rutsch laden
Digg-Entwickler veröffentlichen DUI.Stream im Alphastadium
Das Entwicklerteam hinter Digg.com hat eine Technik entwickelt, die das Laden von komplexen Webseiten mit vielen Elementen beschleunigen soll. Mit DUI.Stream haben sie eine Erweiterung für den Multipart XMLHttpRequests (MXHR) genannten Ansatz in einer frühen Version veröffentlicht.
Je weniger HTTP-Anfragen eine Website bei sonst gleichen Parametern benötigt, desto schneller wird sie vom Browser geladen. Wer seine Webseiten also schneller machen will, sollte unter anderem die Zahl der HTTP-Aufrufe reduzieren, empfiehlt unter anderem Steve Souders, Yahoos Performance-Chef und Autor des Buches High Performance Web Sites.
Das lässt sich beispielsweise durch die Zusammenführung von verschiedenen JavaScript- und CSS-Dateien in jeweils einer Datei erreichen, die gegebenenfalls für den jeweiligen Zweck automatisch zusammengestellt wird. Statt vieler Einzelbilder empfiehlt es sich zudem, sogenannte CSS-Sprites zu nutzen. Dabei werden die auf einer Webseite benutzten Hintergrundbilder in einer Datei zusammengefasst und via CSS der jeweils gewünschte Ausschnitt angezeigt. Zwar ist diese Datei dann vergleichsweise groß, aber der Browser muss sie nur einmal laden und auch nur einmal im Speicher halten.
Die Digg-Entwickler treiben diese Idee nun einen Schritt weiter und haben mit MXHR (Multipart XMLHttpRequests) einen allgemeinen Ansatz entwickelt, um mehrere Dateien mit einer HTTP-Request zu übertragen und im Browser wieder auseinanderzunehmen. Die Idee setzten die Digg-Entwickler in einer DUI.Stream genannten Erweiterung ihrer User-Interface-Bibliothek um.
DUI.Stream liest Multipart-HTTP-Requests Stück für Stück über einen XMLHttpRequest ein und reicht die einzelnen Bestandteile an einen JavaScript-Handler weiter. Auf diese Weise soll sich das Laden von ungecachten Seiten deutlich steigern lassen. Da die einzelnen Teile, direkt nachdem sie geladen wurden, ins DOM eingefügt werden, ergibt sich durch die Bündelung keine nennenswerte Verzögerung und Entwickler haben zugleich den Vorteil, bestimmen zu können, in welcher Reihenfolge die einzelnen Elemente einer Seite geladen werden.
Digg erhofft sich Vorteile bei großen Seiten mit vielen Kommentaren und zugehörigen Userbildern. Noch befinde sich DUI-Stream aber im Alphastadium. Das Ganze sei mehr als ein Proof-of-Concept, aber noch weit davon entfernt, produktiv eingesetzt werden zu können.
Digg hat je eine Demo von DUI.Stream mit zehn Textblöcken und 300 Bildern veröffentlicht, die zeigt, wie sich der MXHR-Ansatz auswirkt. Bei uns waren die MXHR-Versionen in Safari jeweils rund 1/3 schneller geladen, in Firefox lief die MXHR-Bilder-Demo fast fünfmal schneller, während das Laden der zehn Textblöcke auf herkömmlichem Wege nur halb so lang brauchte wie die MXHR-Version. Im Internet Explorer soll das Ganze derzeit nicht besonders gut funktionieren.
Digg stellt den Code von DUI.Stream zusammen mit Demos in Python, Ruby, Perl und Java bei Github zur Verfügung. Details zur Implementierung gibt es in einem Blogeintrag von Micah Snyder.
WAS? Ein "Empfangspuffer" auf dem SERVER?? Nun, den gibt es wirklich - nennt sich...
Die Bilder-Demo lädt 300 verschiedene (ungecachte) (Mini-)Bilder auf einer einzelnen...
Der Ansatz ist dabei viel, viel, viel zu kompliziert. Schon heute ist es möglich, Bilder...
k.T.