„Web Performance“-APIs erhalten schnell den Status einer „W3C Recommendation“

Die W3C-Arbeitsgruppe „Web Performance“ hat kürzlich drei Spezifikationen als „W3C Recommendations“ veröffentlicht, die bei allen bekannten Browserherstellern vollständig implementiert sind. Dies verbessert die Möglichkeiten von Entwicklern, die Messung der Leistung von Webanwendungen zu präzisieren und das Web schneller zu machen. In den letzten drei Jahren haben sich Unternehmen wie Microsoft, Google, Mozilla, Intel und Facebook in der Arbeitsgruppe mit einer Standardisierung der Schnittstellen für Navigation Timing, High Resolution Time und Page Visibility beschäftigt. Die schnelle Annahme dieser Empfehlungen belegt, was möglich ist, wenn die Industrie und die Community im W3C zusammenkommen.

Um die Webleistung zu verbessern, benötigen Entwickler eine Möglichkeit zur präzisen Messung der Leistungsmerkmale von Webanwendungen. Zudem sollte es ihnen ermöglicht werden, die zugrunde liegende Hardware effektiv zu nutzen, um die Leistung ihrer Anwendungen zu verbessern. In der Arbeitsgruppe „Web Performance“ wurden 15 unterschiedliche Spezifikationen erarbeitet, mit denen diese Themen aufgegriffen werden. In der folgenden Tabelle ist der Entwicklungsstand aller Spezifikationen aufgeführt, die derzeit von der Arbeitsgruppe bearbeitet werden.

Spezifikation Editor’s Draft First Public Working Draft Last Call Candidate Rec Proposed Rec Rec
Navigation Timing September 2010 Oktober 2010 Januar 2011 März 2011 Juli 2012 Dezember 2012
Resource Timing September 2010 Mai 2011 August 2011 Mai 2012
User Timing Oktober 2010 August 2011 September 2011 Juli 2012
Performance Timeline Juli 2011 August 2011 September 2011 Juli 2012
High Resolution Time Februar 2012 März 2012 März 2012 Mai 2012 Oktober 2012 Dezember 2012
Page Visibility April 2011 Juni 2011 Juli 2011 Juli 2012 Februar 2013 Mai 2013
Display Paint Notifications Mai 2011 Juni 2011 Februar 2012
Navigation Timing L2 (NEU) Januar 2013 Januar 2013
Efficient Script Yielding Juni 2011
High Resolution Time L2 (NEU) April 2013
Beacon (NEU) März 2013
Resource Priorities (NEU) April 2013
Navigation Error Logging (NEU) April 2013
Resource Error Logging (NEU) April 2013
Prerender (NEU)

Mithilfe der Spezifikationen Navigation Timing, Resource Timing, User Timing und Performance Timeline können Entwickler die Dauer der Dokumentnavigation, des Abrufs von Seitenressourcen sowie der Ausführung des Entwicklerskripts präzise messen. Vor diesen APIs waren solche Daten nicht leicht zugänglich. Die als „W3C Recommendation“ veröffentlichte Spezifikation „Navigation Timing“ wird von allen bekannten Browserherstellern unterstützt. Die anderen drei Schnittstellen haben derzeit den Status „Candidate Recommendation“ und es werden zwei vollständige Implementierungen durch Browserhersteller erwartet. IE10 ist derzeit jedoch der einzige Browser, in dem alle genannten Schnittstellen implementiert sind. Bei anderen Herstellern sind die Implementierungen noch in Arbeit.

Um zu gewährleisten, dass diese Leistungsmetriken so präzise wie möglich gemessen werden, ermöglicht die Spezifikation High Resolution Time den Entwicklern das Messen von Vorgängen mit einer Genauigkeit in einem Bereich unterhalb von Millisekunden. Diese Schnittstelle dient nicht nur der präzisen Messung von Leistungsmetriken, sondern ermöglicht darüber hinaus eine bessere Berechnung der Framerate und die Synchronisierung von Animationen oder Audioaufrufen. Die Schnittstelle wurde als „W3C Recommendation“ veröffentlicht und von allen bekannten Browserherstellern mithilfe der in der Spezifikation definierten Methode „performance.now()“ implementiert.

Die API Page Visibility ermöglicht die Bestimmung des aktuellen Sichtbarkeitszustands einer Seite. Diese Daten können von Entwicklern dazu verwendet werden, Entscheidungen zu treffen, die die CPU-Auslastung und die Energieeffizienz verbessern, z. B. durch das Drosseln der Aktivität, wenn sich die Seite in der Hintergrundregisterkarte befindet. Auch bei dieser Spezifikation handelt es sich um eine veröffentlichte „W3C Recommendation“, die derzeit von allen bekannten Browserherstellern implementiert wird.

Mit den Spezifikationen Timing Control for Script-Based Animations und Efficient Script Yielding können Entwickler die CPU-Auslastung und Energieeffizienz von Webanwendungen verbessern. Die API „requestAnimationFrame“ der Spezifikation „Timing Control for Script-Based Animations“ ermöglicht das Erstellen effizienterer JavaScript-Animationen. Diese Schnittstelle wird von allen Browserherstellern vollständig unterstützt, und die Arbeitsgruppe treibt die Veröffentlichung dieser Spezifikation als „Candidate Recommendation“ voran. Mit der API „setImmediate“ aus der Spezifikation „Efficient Script Yielding“ können Entwickler eine effektive Ablaufsteuerung zum Benutzer-Agent erzielen und ein sofortiges Callback erhalten, um die CPU effizienter zu nutzen. IE10 ist der erste Browser, in dem diese Schnittstelle implementiert ist.

Dieses Jahr hat die Arbeitsgruppe zudem damit begonnen, sich mit neuen Ideen zu befassen, die derzeit als bearbeitete Entwürfe in der Arbeitsgruppe diskutiert werden. Die API Beacon ist dafür vorgesehen, dass Daten per Skript asynchron an einen Webserver übertragen werden, ohne das „Unload“-Ereignis zu blockieren, da sich dieses negativ auf die wahrgenommene Leistung der folgenden Navigation auswirken kann. Die API Resource Priorities bietet Entwicklern eine Methode, mit der sich die Download-Priorität von Browsern besser steuern lässt und damit einer bessere Seitenladezeit erzielt wird. Ergänzend zu den „Timing“-Spezifikationen helfen die Spezifikationen Navigation Error Logging und Resource Error Logging Entwicklern dabei, ein besseres Verständnis der Fehler und der Verfügbarkeit ihrer Anwendungen zu entwickeln. In der Spezifikation Navigation Timing Level L2 wird das „Navigation Timing“ um „High Resolution Time“ und „Performance Timeline“ erweitert. Die Spezifikation High Resolution Time L2 bietet zusätzlich Web Worker-Unterstützung. Dies sind nur einige der Entwürfe, die derzeit von der Arbeitsgruppe festgelegt werden. Weitere Spezifikationsentwürfe befinden sich in der „Prerender“-Phase und andere Diagnosebereiche sind in Entwicklung.

Die W3C-Arbeitsgruppe „Web Performance“ ist ein großartiges Beispiel dafür, wie schnell sich neue Ideen in interoperablen Standards umsetzen lassen, auf die sich Entwickler in modernen HTML5-fähigen Browsern verlassen können. Gemeinsam mit führenden Mitgliedern aus der Branche und der Community, die an der Arbeitsgruppe beteiligt sind, hoffen wir auf rasche Fortschritte bei interoperablen Standards, mit deren Hilfe Entwickler das Web schneller machen können.

Vielen Dank
Jatinder Mann
Internet Explorer Program Manager