Performance APIs
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Performance API umfasst eine Gruppe von Standards zur Messung der Leistung von Webanwendungen.
Konzepte und Verwendung
Damit Webanwendungen schnell sind, ist es wichtig, verschiedene Leistungsmetriken zu messen und zu analysieren. Die Performance API stellt wichtige integrierte Metriken bereit und ermöglicht es Ihnen, eigene Messungen zur Performance-Zeitleiste des Browsers hinzuzufügen. Die Performance-Zeitleiste enthält hochpräzise Zeitstempel und kann in den Entwicklertools angezeigt werden. Sie können ihre Daten auch an Analyse-Endpunkte senden, um Leistungsmetriken über einen längeren Zeitraum zu erfassen.
Jede Leistungsmetrik wird durch einen einzelnen PerformanceEntry dargestellt. Ein Performance-Eintrag hat einen name, eine duration, eine startTime und einen type. Alle Leistungsmetriken erweitern das Interface PerformanceEntry und spezifizieren es genauer.
Die meisten Performance-Einträge werden automatisch erfasst und sind anschließend entweder über Performance.getEntries() oder – vorzugsweise – über PerformanceObserver zugänglich. Beispielsweise werden PerformanceEventTiming-Einträge für Ereignisse erfasst, deren Verarbeitung länger als ein festgelegter Schwellenwert dauert. Mit der Performance API können Sie über die Interfaces PerformanceMark und PerformanceMeasure auch eigene Ereignisse definieren und erfassen.
Das zentrale Interface Performance ist sowohl im globalen Gültigkeitsbereich von Window als auch von Worker verfügbar. Damit können Sie eigene Performance-Einträge hinzufügen, Performance-Einträge löschen und Performance-Einträge abrufen.
Mit dem Interface PerformanceObserver können Sie auf verschiedene Arten von Performance-Einträgen reagieren, sobald diese erfasst werden.
Weitere grundlegende Informationen finden Sie in den Leitfäden zur Performance API weiter unten.
Referenz
Die folgenden Interfaces gehören zur Performance API:
EventCounts-
Eine schreibgeschützte Map, die von
performance.eventCountszurückgegeben wird und die Anzahl der ausgelösten Ereignisse nach Ereignistyp enthält. InteractionContentfulPaint-
Misst die Rendering-Zeit von Contentful Paints, die einer Interaktion zugeordnet sind.
LargestContentfulPaint-
Misst die Rendering-Zeit des größten Bildes oder Textblocks, der im Viewport sichtbar ist, ausgehend vom Beginn des Ladens der Seite.
LayoutShift-
Liefert anhand der Bewegungen von Elementen auf der Seite Einblicke in die Layout-Stabilität von Webseiten.
LayoutShiftAttribution-
Liefert Debugging-Informationen zu Elementen, die sich verschoben haben. Diese Informationen sind über
LayoutShift-Einträge verfügbar. NotRestoredReasonDetails-
Beschreibt einen einzelnen Grund, weshalb eine Seite bei der Navigation den Back/Forward Cache (bfcache) nicht nutzen konnte. Diese Information ist über
NotRestoredReasons-Einträge verfügbar. NotRestoredReasons-
Stellt Berichtsdaten zu den Gründen bereit, weshalb das aktuelle Dokument bei der Navigation den Back/Forward Cache (bfcache) nicht nutzen konnte. Diese Daten sind über
PerformanceNavigationTiming-Einträge verfügbar. Performance-
Zentrales Interface für den Zugriff auf Leistungsmessungen. Es ist in Window- und Worker-Kontexten über
Window.performancebeziehungsweiseWorkerGlobalScope.performanceverfügbar. PerformanceContainerTiming-
Misst Rendering-Zeitstempel bestimmter Container, die mehrere Elemente enthalten.
PerformanceElementTiming-
Misst Rendering-Zeitstempel bestimmter Elemente.
PerformanceEntry-
Ein Eintrag auf der Performance-Zeitleiste, der eine einzelne Leistungsmetrik kapselt. Alle Leistungsmetriken erben von diesem Interface.
PerformanceEventTiming-
Misst die Latenz von Ereignissen und Interaction to Next Paint (INP).
PerformanceLongAnimationFrameTiming-
Liefert Metriken zu langen Animationsframes (LoAFs), die Rendering-Zeit beanspruchen und die Ausführung anderer Aufgaben blockieren.
PerformanceLongTaskTiming-
Liefert Metriken zu langen Aufgaben, die Rendering-Zeit beanspruchen und die Ausführung anderer Aufgaben blockieren.
PerformanceMark-
Benutzerdefinierte Markierung für einen eigenen Eintrag auf der Performance-Zeitleiste.
PerformanceMeasure-
Benutzerdefinierte Zeitmessung zwischen zwei Performance-Einträgen.
-
Misst Ereignisse bei der Navigation zu einem Dokument, beispielsweise wie lange das Laden eines Dokuments dauert.
PerformanceObserver-
Überwacht neue Performance-Einträge, während sie auf der Performance-Zeitleiste erfasst werden.
PerformanceObserverEntryList-
Liste der Einträge, die von einem Performance Observer beobachtet wurden.
PerformancePaintTiming-
Misst Rendering-Vorgänge beim Aufbau einer Webseite.
PerformanceResourceTiming-
Misst Netzwerk-Ladezeiten für Ressourcen wie Bilder, Skripte und Fetch-Aufrufe, darunter die Start- und Endzeitpunkte von Weiterleitungen, den Beginn des Abrufs, die Start- und Endzeitpunkte der DNS-Auflösung sowie die Start- und Endzeitpunkte der Antwort.
PerformanceScriptTiming-
Liefert Metriken zu einzelnen Skripten, die lange Animationsframes (LoAFs) verursachen.
PerformanceServerTiming-
Macht Servermetriken sichtbar, die mit der Antwort im HTTP-Header
Server-Timinggesendet werden. Diese Metriken sind überPerformanceNavigationTiming- undPerformanceResourceTiming-Einträge verfügbar. -
Misst, wann Soft Navigations stattfinden.
TaskAttributionTiming-
Identifiziert die Art der Aufgabe und den Container, der für eine lange Aufgabe verantwortlich ist. Diese Informationen sind über
PerformanceLongTaskTiming-Einträge verfügbar. VisibilityStateEntry-
Misst die Zeitpunkte, zu denen sich der Sichtbarkeitsstatus einer Seite ändert, beispielsweise wenn ein Tab vom Vordergrund in den Hintergrund wechselt oder umgekehrt.
Leitfäden
Die folgenden Leitfäden erläutern zentrale Konzepte der Performance API und geben einen Überblick über ihre Möglichkeiten:
- Performancedaten: Performancedaten erfassen, abrufen und verwenden.
- Hochpräzise Zeitmessung: Messungen mit hochpräzisen Zeitangaben und monotonen Uhren durchführen.
- Zeitmessung für Ressourcen: Netzwerk-Ladezeiten abgerufener Ressourcen wie Bilder, CSS und JavaScript messen.
- Zeitmessung für Navigationen: Die Dauer der Navigation zu einem Dokument messen.
- Benutzerdefinierte Zeitmessung: Anwendungsspezifische Performancedaten messen und erfassen.
- Serverseitige Zeitmessung: Serverseitige Metriken erfassen.
- Zeitmessung für lange Animationsframes: Metriken zu langen Animationsframes (LoAFs) und ihren Ursachen erfassen.
- Gründe für die Blockierung des bfcache überwachen: Berichten, weshalb das aktuelle Dokument den Back/Forward Cache (bfcache) nicht nutzen konnte.