Server-Timing 頭
Baseline 廣泛可用 *
HTTP Server-Timing 響應頭向用戶代理傳達一個或多個關於請求-響應週期的效能指標。它用於在使用者瀏覽器的開發者工具或 PerformanceServerTiming 介面中顯示後端伺服器計時指標(例如,資料庫讀/寫、CPU 時間、檔案系統訪問等)。
語法
// A single metric
Server-Timing: <timing-metric>
// Multiple metrics as a comma-separated list
Server-Timing: <timing-metric>, …, <timing-metricN>
<timing-metric> 具有一個名稱,並且可以包含一個可選的持續時間和一個可選的描述。例如
// 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=prod或desc="DB lookup"。
名稱和描述應儘可能短(例如,使用縮寫並省略可選值),以最大程度地減少 HTTP 資料開銷。
描述
隱私和安全
Server-Timing 頭可能會暴露潛在敏感的應用程式和基礎設施資訊。根據用例決定傳送哪些指標、何時傳送以及誰應該看到它們。例如,您可能決定只向已驗證使用者顯示指標,而不向公共響應顯示任何內容。
PerformanceServerTiming 介面
除了在瀏覽器的開發者工具中顯示 Server-Timing 頭指標外,PerformanceServerTiming 介面還允許工具自動從 JavaScript 收集和處理指標。此介面僅限於同源,但您可以使用 Timing-Allow-Origin 頭來指定允許訪問伺服器指標的域。在某些瀏覽器中,該介面僅在安全上下文(HTTPS)中可用。
Server-Timing 頭的元件與 PerformanceServerTiming 屬性的對映關係如下:
"name"->PerformanceServerTiming.name"dur"->PerformanceServerTiming.duration"desc"->PerformanceServerTiming.description
示例
使用 Server-Timing 頭髮送指標
以下響應包含一個名為 custom-metric 的指標,持續時間為 123.45 毫秒,描述為 "My custom metric"
Server-Timing: custom-metric;dur=123.45;desc="My custom metric"
Server-Timing 作為 HTTP 尾部
在以下響應中,Trailer 頭用於指示 Server-Timing 頭將在響應正文之後。傳送一個名為 custom-metric 的指標,持續時間為 123.4 毫秒。
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 |
瀏覽器相容性
載入中…