PerformanceResourceTiming: finalResponseHeadersStart 屬性

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

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

只讀屬性 finalResponseHeadersStart 返回一個 timestamp,該時間戳表示瀏覽器在從伺服器接收到最終文件響應(例如,200 OK)的第一個位元組後立即觸發。

這與 requestStart(也可能表示為 firstInterimResponseStart)不同,因為 requestStart 從任何響應(包括中間響應,例如 103 Early Hints)的第一個位元組開始計時,而最終響應可能晚得多。

當沒有中間響應時,requestStartfinalResponseHeadersStart 相同,並且 firstInterimResponseStart 為 0。

finalResponseHeadersStart 沒有結束屬性。

finalResponseHeadersStart 屬性可以具有以下值

  • 一個 DOMHighResTimeStamp,表示瀏覽器在從伺服器接收到最終響應的第一個位元組後立即觸發。
  • 如果資源是跨域請求且未使用 Timing-Allow-Origin HTTP 響應頭,則返回 0

示例

測量請求時間

finalResponseHeadersStartrequestStart 屬性可用於測量瀏覽器在傳送請求後開始接收最終響應所需的時間。

js
const request = entry.finalResponseHeadersStart - entry.requestStart;

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

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const request = entry.finalResponseHeadersStart - entry.requestStart;
    if (request > 0) {
      console.log(`${entry.name}: final response time: ${request}ms`);
    }
  });
});

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

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

js
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
  const request = entry.finalResponseHeadersStart - entry.requestStart;
  if (request > 0) {
    console.log(`${entry.name}: final response time: ${request}ms`);
  }
});

以下示例顯示瞭如何測量第一個響應頭和最終響應頭之間的時間。

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const diff = entry.finalResponseHeadersStart - entry.responseStart;
    if ((entry.finalResponseHeadersStart > 0) & (diff > 0)) {
      console.log(
        `${entry.name}: time between first and final response start: ${diff}ms`,
      );
    }
  });
});

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

跨域計時資訊

如果 finalResponseHeadersStart 屬性的值為 0,則該資源可能是跨域請求。要允許檢視跨域時序資訊,需要設定 Timing-Allow-Origin HTTP 響應頭。

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

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

規範

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

瀏覽器相容性

另見