PerformanceResourceTiming: workerStart-Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die schreibgeschützte Eigenschaft workerStart der Schnittstelle PerformanceResourceTiming gibt einen DOMHighResTimeStamp unmittelbar vor dem Dispatchen des FetchEvent zurück, wenn ein Service Worker-Thread bereits läuft, oder unmittelbar bevor der Service Worker-Thread gestartet wird, falls er noch nicht läuft. Wenn die Ressource nicht von einem Service Worker abgefangen wird, gibt die Eigenschaft immer 0 zurück.

Wert

Die workerStart-Eigenschaft kann folgende Werte haben:

  • Ein DOMHighResTimeStamp.
  • 0, wenn kein Service Worker verwendet wird.
  • 0, wenn die Ressource eine Cross-Origin-Anfrage ist und der Timing-Allow-Origin HTTP-Antwort-Header nicht verwendet wird.

Beispiele

Messung der Verarbeitungszeit von ServiceWorker

Die Eigenschaften workerStart und fetchStart können verwendet werden, um die Verarbeitungszeit eines ServiceWorker zu messen.

js
const workerProcessingTime = entry.fetchStart - entry.workerStart;

Beispiel mit einem PerformanceObserver, der benachrichtigt, wenn neue resource-Performance-Einträge in der Performance-Zeitleiste des Browsers erfasst werden. Verwenden Sie die buffered-Option, um auf Einträge von vor der Erstellung des Observers zuzugreifen.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const workerProcessingTime = entry.fetchStart - entry.workerStart;
    if (workerProcessingTime > 0) {
      console.log(
        `${entry.name}: Worker processing time: ${workerProcessingTime}ms`,
      );
    }
  });
});

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

Beispiel mit Performance.getEntriesByType(), das nur resource-Performance-Einträge zeigt, die zum Zeitpunkt des Aufrufs dieser Methode in der Performance-Zeitleiste des Browsers vorhanden sind:

js
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
  const workerProcessingTime = entry.fetchStart - entry.workerStart;
  if (workerProcessingTime > 0) {
    console.log(
      `${entry.name}: Worker processing time: ${workerProcessingTime}ms`,
    );
  }
});

Informationen zur Cross-Origin-Timing

Wenn der Wert der workerStart-Eigenschaft 0 ist, könnte die Ressource eine Cross-Origin-Anfrage sein. Um Timing-Informationen für Cross-Origin zu sehen, muss der Timing-Allow-Origin HTTP-Antwort-Header gesetzt werden.

Um beispielsweise https://developer.mozilla.org das Sehen von Timing-Ressourcen zu erlauben, sollte die Cross-Origin-Ressource senden:

http
Timing-Allow-Origin: https://developer.mozilla.org

Spezifikationen

Specification
Resource Timing
# dom-performanceresourcetiming-workerstart

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
workerStart

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Has more compatibility info.

Siehe auch