Server-Timing 頭

Baseline 廣泛可用 *

此功能已成熟,並可在許多裝置和瀏覽器版本上執行。自 2023 年 3 月以來,它已在各種瀏覽器中可用。

* 此特性的某些部分可能存在不同級別的支援。

HTTP Server-Timing 響應頭向用戶代理傳達一個或多個關於請求-響應週期的效能指標。它用於在使用者瀏覽器的開發者工具或 PerformanceServerTiming 介面中顯示後端伺服器計時指標(例如,資料庫讀/寫、CPU 時間、檔案系統訪問等)。

頭型別 響應頭
禁止請求頭

語法

http
// A single metric
Server-Timing: <timing-metric>

// Multiple metrics as a comma-separated list
Server-Timing: <timing-metric>, …, <timing-metricN>

<timing-metric> 具有一個名稱,並且可以包含一個可選的持續時間和一個可選的描述。例如

http
// A metric with a name only
Server-Timing: missedCache

// A metric with a duration
Server-Timing: cpu;dur=2.4

// A metric with a description and duration
Server-Timing: cache;desc="Cache Read";dur=23.2

// Two metrics with duration values
Server-Timing: db;dur=53, app;dur=47.2

指令

<timing-metric>

一個逗號分隔的一個或多個指標列表,每個指標由以下用分號分隔的元件組成:

<name>

一個名稱標記(無空格或特殊字元),用於表示實現特定或由伺服器定義的指標,例如 cacheHit

<duration> 可選

持續時間表示為字串 dur,後跟 =,再後跟一個值,例如 dur=23.2

<description> 可選

描述表示為字串 desc,後跟 =,再後跟一個作為標記或帶引號字串的值,例如 desc=proddesc="DB lookup"

名稱和描述應儘可能短(例如,使用縮寫並省略可選值),以最大程度地減少 HTTP 資料開銷。

描述

隱私和安全

Server-Timing 頭可能會暴露潛在敏感的應用程式和基礎設施資訊。根據用例決定傳送哪些指標、何時傳送以及誰應該看到它們。例如,您可能決定只向已驗證使用者顯示指標,而不向公共響應顯示任何內容。

PerformanceServerTiming 介面

除了在瀏覽器的開發者工具中顯示 Server-Timing 頭指標外,PerformanceServerTiming 介面還允許工具自動從 JavaScript 收集和處理指標。此介面僅限於同源,但您可以使用 Timing-Allow-Origin 頭來指定允許訪問伺服器指標的域。在某些瀏覽器中,該介面僅在安全上下文(HTTPS)中可用。

Server-Timing 頭的元件與 PerformanceServerTiming 屬性的對映關係如下:

示例

使用 Server-Timing 頭髮送指標

以下響應包含一個名為 custom-metric 的指標,持續時間為 123.45 毫秒,描述為 "My custom metric"

http
Server-Timing: custom-metric;dur=123.45;desc="My custom metric"

Server-Timing 作為 HTTP 尾部

在以下響應中,Trailer 頭用於指示 Server-Timing 頭將在響應正文之後。傳送一個名為 custom-metric 的指標,持續時間為 123.4 毫秒。

http
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Trailer: Server-Timing

--- response body ---
Server-Timing: custom-metric;dur=123.4

警告: 只有瀏覽器的開發者工具可以將 Server-Timing 頭作為 HTTP 尾部來在“網路 -> 計時”選項卡中顯示資訊。Fetch API 無法訪問 HTTP 尾部。有關更多資訊,請參閱瀏覽器相容性

規範

規範
伺服器計時
# the-server-timing-header-field

瀏覽器相容性

另見