優先順序

Priority HTTP 頭部在請求中傳送,用於指示客戶端對包含請求資源的響應的優先順序順序的偏好,相對於同一連線上的其他資源請求。如果請求中未指定頭部,則假定預設優先順序。

伺服器不受客戶端優先順序約束,並且可能僅將客戶端請求用作其自身優先順序流程的提示。例如,伺服器可能知道特定影像對使用者體驗至關重要,並且應該以最高優先順序傳送。伺服器優先順序也可能受到網路擁塞等因素的影響。

此請求可能被快取,並且伺服器預計使用控制快取行為的頭部欄位(如 Cache-ControlVary)來控制快取的可快取性或快取響應的適用性。

伺服器還可能在響應中包含此頭部,以指示它對更改優先順序感興趣。然後,此資訊可以用作快取伺服器和其他轉發響應的伺服器的優先順序流程的輸入。

注意:此頭部是 RFC 9218 中定義的“HTTP 可擴充套件優先順序方案”的一部分。還有 HTTP/2 和 HTTP/3 PRIORITY_UPDATE 幀,可用於在傳送資源請求後重新排列資源請求的優先順序。請求可以在任何 HTTP 版本中傳送。

頭部型別 請求頭部響應頭部
禁止的頭部名稱

語法

http
Priority: u=<priority>
Priority: i
Priority: u=<priority>, i

指令

u=<priority>

“緊急程度”(u)引數指定資源的優先順序值 <priority>。該值是介於 0 到 7(含)之間的整數,按優先順序降序排列(0 是最高緊急程度)。請求的預設優先順序值為 3。響應沒有預設優先順序值:響應中頭部的缺失表示伺服器選擇不修改客戶端優先順序。優先順序 7 僅應用於不太可能影響使用者體驗的資源,例如後臺任務或軟體更新的交付。

瀏覽器應以預設優先順序請求可能使用其他資源的文件。然後應使用反映其到達時間對使用者體驗的相對影響的值來請求引用的資源。

伺服器可能對優先順序的看法與客戶端不同,並且可以響應不同的值以向中間伺服器提供優先順序提示。中間伺服器可能會將此值與原始請求優先順序一起考慮。響應中缺少 Priority 頭部表示伺服器選擇不修改客戶端優先順序。

i

如果存在增量(i)指令,則表示 HTTP 響應可以增量處理。

可以增量處理的資源是指接收者可以在到達第一個塊時立即執行一些有用的操作,而不是等待整個資源可用。

如果瀏覽器設定了此指令,則伺服器可以選擇以相同的緊急程度同時服務所有增量請求。這將多個請求分佈在連線頻寬上,結果是所有請求都開始更早地處理,但總共需要更長時間才能完成。

如果瀏覽器未設定此指令,則表示它不會增量處理資源。在這種情況下,伺服器應按順序傳送具有相同緊急程度的響應,順序與生成其關聯請求的順序相同。

注意:伺服器預計會忽略它們不理解的此頭部上的指令。未來新增的新指令預計將與這些現有指令相容,以便可以安全地忽略它們。

示例

設定資源緊急程度

以下示例顯示了對 HTML 檔案的請求。緊急程度未設定,因此預設為 3,i 為假。這是擁有其他資源的文件的正常設定。

http
:method = GET
:scheme = https
:authority = example.net
:path = /index.html

以下請求是 HTML 使用的 CSS 檔案的可能的後續請求。緊急程度設定為 2,表示瀏覽器認為它非常高優先順序,但 i 未設定,因為 CSS 檔案無法增量處理。

http
:method = GET
:scheme = https
:authority = example.net
:path = /style.css
priority = u=2

注意:以上請求使用 HTTP/2 或 HTTP/3 規範中的可讀格式。此文件的大部分內容中使用的 HTTP/1.1 格式類似於

http
GET /style.css HTTP/1.1
Host: example.net
Priority: u=2

響應可能如下所示。請注意,在這種情況下,priority 未指定,表示伺服器認為它不需要更改中間伺服器的優先順序。

http
:status: 200
content-type: text/css
content-length: 610
date: [current date]

設定增量指令

以下頭部顯示了瀏覽器對可以增量呈現的影像的請求。在這種情況下,優先順序設定為 4(低於預設的 3),並且 i 設定為指示客戶端可以增量處理 JPG 檔案。

http
:method = GET
:path = /image.jpg
:scheme = https
:authority = example.net
priority = u=4, i

伺服器可能會發送類似於以下響應的響應。在這種情況下,優先順序設定為 1,表示伺服器瞭解到特定影像應該以高優先順序傳送。

http
:status: 200
content-type = image/jpeg
content-length = 610
...
priority = u=1, i

規範

規範
HTTP 可擴充套件優先順序方案
# header-field

瀏覽器相容性

BCD 表格僅在啟用 JavaScript 的瀏覽器中載入。