优先级头部

HTTP Priority 头部指示客户端对于响应中包含的请求资源应以何种优先级发送的偏好,相对于同一连接上的其他资源请求。如果请求中未指定此头部,则假定为默认优先级。服务器也可以在响应中包含此头部,以表明它有意更改客户端声明的优先级偏好。在响应中,此信息可用作缓存服务器和其他转发响应的服务器的优先级处理过程的输入。

服务器不受客户端优先级的约束,并且可能只将客户端优先级作为其自身优先级处理过程的提示。例如,服务器可能知道某个特定图像对用户体验至关重要,应以最高优先级发送。服务器优先级也可能受网络拥堵等因素影响。

此请求可能会被缓存,服务器应使用控制缓存行为的头部字段(例如 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 和 7),按优先级降序排列(0 是最高紧急程度)。请求的默认优先级值为 3。响应没有默认优先级值:响应中缺少此头部表示服务器选择不修改客户端优先级。优先级 7 仅应用于不太可能影响用户体验的资源,例如后台任务或软件更新的交付。

浏览器应以默认优先级级别请求可能使用其他文档的文档。然后应使用反映其到达时间对用户体验的相对影响的值来请求引用的资源。

服务器可能与客户端对优先级有不同的看法,并且可以响应不同的值,以便向中间服务器提供优先级提示。中间服务器可以结合原始请求优先级考虑此值。响应中缺少 Priority 头部表示服务器选择不修改客户端优先级。

i

增量(i)指令(如果存在)表示 HTTP 响应可以增量处理。

可以增量处理的资源是指收件人一旦收到一个块就可以做一些有用的事情,而不是等待完整的资源可用。

如果浏览器设置了此指令,则服务器可以选择并发地以相同的紧急程度服务所有增量请求。这会将多个请求分布在连接带宽上,结果是所有请求都更早开始处理,但总共需要更长时间才能完成。

如果浏览器未设置此指令,则表示它不会增量处理资源。在这种情况下,服务器应按照其关联请求生成的顺序,一个接一个地以相同的紧急程度发送响应。

注意: 服务器应忽略它们不理解的此头部上的指令。未来添加的新指令应与这些现有指令兼容,以便可以安全地忽略它们。

示例

设置资源紧急程度

以下示例显示了对 HTML 文件的请求。未设置紧急程度,因此默认为 3,i 为 false。这是拥有其他资源的文档的正常设置。

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 可扩展优先级方案
# 头部字段

浏览器兼容性

另见