PerformanceResourceTiming: firstInterimResponseStart 屬性

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

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

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

只讀屬性 firstInterimResponseStart 返回一個 timestamp,表示瀏覽器在從伺服器接收到 1xx 響應(例如,100 Continue 或 103 Early Hints)的第一個位元組後立即記錄的時間。

firstInterimResponseStart 沒有結束屬性。

firstInterimResponseStart 屬性可以具有以下值:

  • 一個 DOMHighResTimeStamp,表示瀏覽器在從伺服器接收到響應的第一個中間位元組後立即記錄的時間。
  • 如果資源沒有傳送中間響應,則為 0
  • 如果資源是跨域請求且未使用 Timing-Allow-Origin HTTP 響應頭,則返回 0

注意: Early Hints 通常只支援主導航請求,而主導航請求定義上是同源的,因此 0 通常表示未使 Early Hints。

firstInterimResponseStart 非零時,對於支援的瀏覽器,它應與 requestStart 的值相同。

示例

測量請求時間

firstInterimResponseStartrequestStart 屬性可用於衡量瀏覽器在傳送請求後接收中間響應所需的時間。

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

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

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const request = entry.firstInterimResponseStart - entry.requestStart;
    if (request > 0) {
      console.log(`${entry.name}: Interim 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.firstInterimResponseStart - entry.requestStart;
  if (request > 0) {
    console.log(`${entry.name}: Interim response time: ${request}ms`);
  }
});

跨域計時資訊

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

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

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

規範

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

瀏覽器相容性

另見