PerformanceLongTaskTiming

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Die PerformanceLongTaskTiming-Schnittstelle liefert Informationen über Aufgaben, die den UI-Thread für 50 Millisekunden oder länger blockieren.

Beschreibung

Lange Aufgaben, die den Haupt-Thread für 50 ms oder mehr blockieren, verursachen unter anderem folgende Probleme:

  • Verzögerung beim Time to interactive (TTI).
  • Hohe/variable Eingabelatenz.
  • Hohe/variable Ereignisverarbeitungslatenz.
  • Ruckelige Animationen und Scrollen.

Eine lange Aufgabe ist jeder ununterbrochene Zeitraum, in dem der Haupt-UI-Thread für 50 ms oder länger beschäftigt ist. Häufige Beispiele umfassen:

  • Lang laufende Ereignishandler.
  • Teure Reflows und andere Neurenderungen.
  • Arbeiten des Browsers zwischen verschiedenen Veranstaltungszyklus-Durchläufen, die 50 ms überschreiten.

Lange Aufgaben beziehen sich auf den "verantwortlichen Browsing-Kontext-Container", oder kurz "den Container", welcher die übergeordnete Seite, das <iframe>, das <embed> oder das <object> ist, innerhalb dessen die Aufgabe auftrat.

Für Aufgaben, die nicht innerhalb der obersten Seite auftreten und um herauszufinden, welcher Container für die lange Aufgabe verantwortlich ist, bietet die TaskAttributionTiming Schnittstelle die Eigenschaften containerId, containerName und containerSrc, die möglicherweise weitere Informationen über die Quelle der Aufgabe liefern.

PerformanceLongTaskTiming erbt von PerformanceEntry.

PerformanceEntry PerformanceLongTaskTiming

Instanzeigenschaften

Diese Schnittstelle erweitert die folgenden PerformanceEntry Eigenschaften für Langaufgaben-Timing-Leistungseintragstypen, indem sie sie wie folgt qualifiziert:

PerformanceEntry.duration Nur lesbar Experimentell

Gibt einen DOMHighResTimeStamp zurück, der die verstrichene Zeit zwischen Beginn und Ende der Aufgabe mit einer Granularität von 1 ms darstellt.

PerformanceEntry.entryType Nur lesbar Experimentell

Gibt immer "longtask" zurück

PerformanceEntry.name Nur lesbar Experimentell

Gibt einen der folgenden Strings zurück, der auf den Browsing-Kontext oder das Frame verweist, das der langen Aufgabe zugeschrieben werden kann:

  • "cross-origin-ancestor"
  • "cross-origin-descendant"
  • "cross-origin-unreachable"
  • "multiple-contexts"
  • "same-origin-ancestor"
  • "same-origin-descendant"
  • "same-origin"
  • "self"
  • "unknown"
PerformanceEntry.startTime Nur lesbar Experimentell

Gibt einen DOMHighResTimeStamp zurück, der die Zeit darstellt, zu der die Aufgabe begonnen hat.

Diese Schnittstelle unterstützt auch die folgenden Eigenschaften:

PerformanceLongTaskTiming.attribution Nur lesbar Experimentell

Gibt eine Sequenz von TaskAttributionTiming Instanzen zurück.

Instanzmethoden

PerformanceLongTaskTiming.toJSON() Experimentell

Gibt eine JSON-Darstellung des PerformanceLongTaskTiming-Objekts zurück.

Beispiele

Lange Aufgaben erfassen

Um Informationen zum Timing von langen Aufgaben zu erhalten, erstellen Sie eine Instanz von PerformanceObserver und rufen dann die Methode observe() auf, wobei Sie "longtask" als Wert der type-Option übergeben. Sie müssen auch buffered auf true setzen, um Zugang zu langen Aufgaben zu erhalten, die das Benutzergerät beim Erstellen des Dokuments gepuffert hat. Der Callback des PerformanceObserver-Objekts wird dann mit einer Liste von PerformanceLongTaskTiming-Objekten aufgerufen, die Sie analysieren können.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(entry);
  });
});

observer.observe({ type: "longtask", buffered: true });

Spezifikationen

Specification
Long Tasks API
# sec-PerformanceLongTaskTiming

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch