PerformanceResourceTiming: workerStart 屬性

Baseline 已廣泛支援

此功能已非常成熟,可在許多裝置和瀏覽器版本上執行。自 2018 年 1 月起,它已在所有瀏覽器中可用。

注意:此功能在 Web Workers 中可用。

workerStartPerformanceResourceTiming 介面的一個只讀屬性,它返回一個 DOMHighResTimeStamp。該時間戳表示在 Service Worker 執行緒已執行時,在分派 FetchEvent 之前立即;或者在 Service Worker 執行緒尚未執行時,在啟動 Service Worker 執行緒之前立即。如果資源未被 Service Worker 攔截,則該屬性始終返回 0。

workerStart 屬性可能具有以下值:

示例

測量 ServiceWorker 處理時間

workerStartfetchStart 屬性可用於測量 ServiceWorker 的處理時間。

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

使用 PerformanceObserver 的示例,它會在瀏覽器效能時間線中記錄新的 resource 效能條目時通知。使用 buffered 選項可以訪問觀察者建立之前的條目。

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 });

使用 Performance.getEntriesByType() 的示例,它只顯示在呼叫此方法時瀏覽器效能時間線中存在的 resource 效能條目

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`,
    );
  }
});

跨域計時資訊

如果 workerStart 屬性的值為 0,則該資源可能是跨域請求。為了能夠看到跨域時序資訊,需要設定 Timing-Allow-Origin HTTP 響應頭。

例如,要允許 https://mdn.club.tw 檢視時序資源,跨域資源應傳送

http
Timing-Allow-Origin: https://mdn.club.tw

規範

規範
資源時序
# dom-performanceresourcetiming-workerstart

瀏覽器相容性

另見