優先順序頭部
HTTP Priority 頭部指示客戶端對於響應中包含的請求資源應以何種優先順序傳送的偏好,相對於同一連線上的其他資源請求。如果請求中未指定此頭部,則假定為預設優先順序。伺服器也可以在響應中包含此頭部,以表明它有意更改客戶端宣告的優先順序偏好。在響應中,此資訊可用作快取伺服器和其他轉發響應的伺服器的優先順序處理過程的輸入。
伺服器不受客戶端優先順序的約束,並且可能只將客戶端優先順序作為其自身優先順序處理過程的提示。例如,伺服器可能知道某個特定影像對使用者體驗至關重要,應以最高優先順序傳送。伺服器優先順序也可能受網路擁堵等因素影響。
此請求可能會被快取,伺服器應使用控制快取行為的頭部欄位(例如 Cache-Control 和 Vary)來控制快取響應的可快取性或適用性。
注意: 此頭部是 RFC 9218 中定義的“HTTP 可擴充套件優先順序方案”的一部分。還有 HTTP/2 和 HTTP/3 PRIORITY_UPDATE 幀,可用於在資源請求傳送後重新設定其優先順序。該請求可以以任何 HTTP 版本傳送。
語法
Priority: u=<priority>
Priority: i
Priority: u=<priority>, i
指令
u=<priority>-
“緊急程度”(
u)引數為資源指定一個優先順序值<priority>。該值是一個介於 0 到 7 之間的整數(包括 0 和 7),按優先順序降序排列(0 是最高緊急程度)。請求的預設優先順序值為 3。響應沒有預設優先順序值:響應中缺少此頭部表示伺服器選擇不修改客戶端優先順序。優先順序 7 僅應用於不太可能影響使用者體驗的資源,例如後臺任務或軟體更新的交付。瀏覽器應以預設優先順序級別請求可能使用其他文件的文件。然後應使用反映其到達時間對使用者體驗的相對影響的值來請求引用的資源。
伺服器可能與客戶端對優先順序有不同的看法,並且可以響應不同的值,以便向中間伺服器提供優先順序提示。中間伺服器可以結合原始請求優先順序考慮此值。響應中缺少
Priority頭部表示伺服器選擇不修改客戶端優先順序。 i-
增量(
i)指令(如果存在)表示 HTTP 響應可以增量處理。可以增量處理的資源是指收件人一旦收到一個塊就可以做一些有用的事情,而不是等待完整的資源可用。
如果瀏覽器設定了此指令,則伺服器可以選擇併發地以相同的緊急程度服務所有增量請求。這會將多個請求分佈在連線頻寬上,結果是所有請求都更早開始處理,但總共需要更長時間才能完成。
如果瀏覽器未設定此指令,則表示它不會增量處理資源。在這種情況下,伺服器應按照其關聯請求生成的順序,一個接一個地以相同的緊急程度傳送響應。
注意: 伺服器應忽略它們不理解的此頭部上的指令。未來新增的新指令應與這些現有指令相容,以便可以安全地忽略它們。
示例
設定資源緊急程度
以下示例顯示了對 HTML 檔案的請求。未設定緊急程度,因此預設為 3,i 為 false。這是擁有其他資源的文件的正常設定。
:method = GET
:scheme = https
:authority = example.net
:path = /index.html
以下請求是 HTML 使用的 CSS 檔案可能發生的後續請求。緊急程度設定為 2,表示瀏覽器認為它的優先順序很高,但 i 未設定,因為 CSS 檔案無法增量處理。
:method = GET
:scheme = https
:authority = example.net
:path = /style.css
priority = u=2
注意: 上述請求使用 HTTP/2 或 HTTP/3 規範中可讀的格式。此文件大部分內容使用的 HTTP/1.1 格式將類似於
GET /style.css HTTP/1.1
Host: example.net
Priority: u=2
響應可能如下所示。請注意,在這種情況下,未指定 priority,表示伺服器認為不需要為中間伺服器更改優先順序。
:status: 200
content-type: text/css
content-length: 610
date: [current date]
設定增量指令
以下頭部顯示了瀏覽器請求可增量渲染的影像。在這種情況下,優先順序設定為 4(低於預設值 3),並且設定了 i 以指示客戶端可以增量處理 JPG 檔案。
:method = GET
:path = /image.jpg
:scheme = https
:authority = example.net
priority = u=4, i
伺服器可能會發送如下所示的響應。在這種情況下,優先順序設定為 1,表示伺服器理解特定影像應以高優先順序傳送。
:status: 200
content-type = image/jpeg
content-length = 610
...
priority = u=1, i
規範
| 規範 |
|---|
| HTTP 可擴充套件優先順序方案 # 頭部欄位 |
瀏覽器相容性
載入中…