PerformanceLongTaskTiming
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Die Schnittstelle PerformanceLongTaskTiming liefert Informationen über Aufgaben, die den UI-Thread mindestens 50 Millisekunden lang beanspruchen.
PerformanceLongTaskTiming erbt von PerformanceEntry.
Instanzeigenschaften
Diese Schnittstelle erweitert die folgenden Eigenschaften von PerformanceEntry für Performance-Einträge vom Typ „long task“ mit den folgenden Festlegungen:
PerformanceEntry.durationSchreibgeschützt-
Gibt einen
DOMHighResTimeStampzurück, der die verstrichene Zeit zwischen Beginn und Ende der Aufgabe mit einer Auflösung von 1 ms angibt. PerformanceEntry.entryTypeSchreibgeschützt-
Gibt immer
"longtask"zurück. PerformanceEntry.nameSchreibgeschützt-
Gibt einen der folgenden Strings zurück, der den Browsing-Kontext oder Frame bezeichnet, dem die lang andauernde Aufgabe zugeordnet werden kann:
"cross-origin-ancestor""cross-origin-descendant""cross-origin-unreachable""multiple-contexts""same-origin-ancestor""same-origin-descendant""same-origin""self""unknown"
PerformanceEntry.startTimeSchreibgeschützt-
Gibt einen
DOMHighResTimeStampzurück, der den Zeitpunkt angibt, zu dem die Aufgabe begann.
Diese Schnittstelle unterstützt außerdem die folgende Eigenschaft:
PerformanceLongTaskTiming.attributionSchreibgeschützt-
Gibt eine Sequenz von
TaskAttributionTiming-Instanzen zurück.
Instanzmethoden
PerformanceLongTaskTiming.toJSON()-
Gibt ein JSON-serialisierbares einfaches Objekt zurück, das das
PerformanceLongTaskTiming-Objekt repräsentiert. Die Methode wird vonJSON.stringify()automatisch aufgerufen.
Beschreibung
Lang andauernde Aufgaben, die den Hauptthread mindestens 50 ms lang blockieren, verursachen unter anderem:
- Eine verzögerte Time to Interactive (TTI).
- Eine hohe oder schwankende Eingabelatenz.
- Eine hohe oder schwankende Latenz bei der Ereignisverarbeitung.
- Ruckelnde Animationen und ruckelndes Scrollen.
Eine lang andauernde Aufgabe ist jeder ununterbrochene Zeitraum, in dem der Haupt-UI-Thread mindestens 50 ms lang beschäftigt ist. Häufige Beispiele sind:
- Lang laufende Event-Handler.
- Aufwendige Reflows und andere erneute Render-Vorgänge.
- Arbeiten, die der Browser zwischen verschiedenen Durchläufen des Event-Loops ausführt und die länger als 50 ms dauern.
Lang andauernde Aufgaben beziehen sich auf den „culprit browsing context container“, kurz „Container“. Dabei handelt es sich um die oberste Seite oder das <iframe>-, <embed>- oder <object>-Element, in dem die Aufgabe aufgetreten ist.
Für Aufgaben, die nicht innerhalb der obersten Seite auftreten, stellt die Schnittstelle TaskAttributionTiming die Eigenschaften containerId, containerName und containerSrc bereit. Diese können helfen, den für die lang andauernde Aufgabe verantwortlichen Container zu bestimmen und weitere Informationen über die Quelle der Aufgabe liefern.
Beispiele
>Lang andauernde Aufgaben erfassen
Um Timing-Informationen zu lang andauernden Aufgaben zu erhalten, erstellen Sie eine PerformanceObserver-Instanz und rufen Sie deren Methode observe() auf. Übergeben Sie dabei "longtask" als Wert der Option type. Setzen Sie außerdem buffered auf true, um Zugriff auf lang andauernde Aufgaben zu erhalten, die der User-Agent während des Aufbaus des Dokuments zwischengespeichert hat. Der Callback des PerformanceObserver-Objekts wird anschließend mit einer Liste von PerformanceLongTaskTiming-Objekten aufgerufen, die Sie analysieren können.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(entry);
});
});
observer.observe({ type: "longtask", buffered: true });