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.
Die Schnittstelle PerformanceLongTaskTiming liefert Informationen über Aufgaben, die den UI-Thread mindestens 50 Millisekunden lang belegen.
Beschreibung
Lange Aufgaben, die den Haupt-Thread mindestens 50 ms lang blockieren, verursachen unter anderem:
- Eine verzögerte Time to interactive (TTI).
- Hohe oder schwankende Latenz bei Eingaben.
- Hohe oder schwankende Latenz bei der Ereignisverarbeitung.
- Ruckelnde Animationen und Bildlaufvorgänge.
Eine lange Aufgabe ist jeder ununterbrochene Zeitraum, in dem der Haupt-UI-Thread mindestens 50 ms lang beschäftigt ist. Häufige Beispiele sind:
- Lange laufende Event-Handler.
- Aufwendige Reflows und andere Neudarstellungen.
- Arbeiten, die der Browser zwischen verschiedenen Durchläufen der Ereignisschleife ausführt und die länger als 50 ms dauern.
Lange Aufgaben beziehen sich auf den „culprit browsing context container“, kurz „Container“. Das ist die Seite auf oberster Ebene oder das <iframe>-, <embed>- oder <object>-Element, innerhalb dessen die Aufgabe aufgetreten ist.
Bei Aufgaben, die nicht innerhalb der Seite auf oberster Ebene auftreten, hilft die Schnittstelle TaskAttributionTiming dabei, den für die lange Aufgabe verantwortlichen Container zu ermitteln. Ihre Eigenschaften containerId, containerName und containerSrc können weitere Informationen über den Ursprung der Aufgabe liefern.
PerformanceLongTaskTiming erbt von PerformanceEntry.
Instanzeigenschaften
Diese Schnittstelle erweitert die folgenden Eigenschaften von PerformanceEntry für Performance-Einträge vom Typ „long task timing“ und legt sie wie folgt fest:
PerformanceEntry.durationSchreibgeschützt-
Gibt einen
DOMHighResTimeStampzurück, der die zwischen Beginn und Ende der Aufgabe verstrichene Zeit mit einer Auflösung von 1 ms angibt. PerformanceEntry.entryTypeSchreibgeschützt-
Gibt immer
"longtask"zurück. PerformanceEntry.nameSchreibgeschützt-
Gibt eine der folgenden Zeichenfolgen zurück, die den Browsing-Kontext oder Frame bezeichnet, dem die lange 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 begonnen hat.
Diese Schnittstelle unterstützt außerdem die folgenden Eigenschaften:
PerformanceLongTaskTiming.attributionSchreibgeschützt-
Gibt eine Folge von
TaskAttributionTiming-Instanzen zurück.
Instanzmethoden
PerformanceLongTaskTiming.toJSON()-
Gibt ein JSON-serialisierbares einfaches Objekt zurück, das das
PerformanceLongTaskTiming-Objekt repräsentiert. Wird vonJSON.stringify()automatisch aufgerufen.
Beispiele
>Lange Aufgaben erfassen
Um Zeitinformationen zu langen Aufgaben abzurufen, 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 lange Aufgaben zu erhalten, die der User-Agent während der Erstellung des Dokuments zwischengespeichert hat. Die Callback-Funktion 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 });
Spezifikationen
| Spezifikation |
|---|
| Long Tasks API> # sec-PerformanceLongTaskTiming> |