优先级
Priority
HTTP 头部在请求中发送,用于指示客户端对包含请求资源的响应的优先级顺序的偏好,相对于同一连接上的其他资源请求。如果请求中未指定头部,则假定默认优先级。
服务器不受客户端优先级约束,并且可能仅将客户端请求用作其自身优先级流程的提示。例如,服务器可能知道特定图像对用户体验至关重要,并且应该以最高优先级发送。服务器优先级也可能受到网络拥塞等因素的影响。
此请求可能被缓存,并且服务器预计使用控制缓存行为的头部字段(如 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 是最高紧急程度)。请求的默认优先级值为 3。响应没有默认优先级值:响应中头部的缺失表示服务器选择不修改客户端优先级。优先级 7 仅应用于不太可能影响用户体验的资源,例如后台任务或软件更新的交付。浏览器应以默认优先级请求可能使用其他资源的文档。然后应使用反映其到达时间对用户体验的相对影响的值来请求引用的资源。
服务器可能对优先级的看法与客户端不同,并且可以响应不同的值以向中间服务器提供优先级提示。中间服务器可能会将此值与原始请求优先级一起考虑。响应中缺少
Priority
头部表示服务器选择不修改客户端优先级。 i
-
如果存在增量(
i
)指令,则表示 HTTP 响应可以增量处理。可以增量处理的资源是指接收者可以在到达第一个块时立即执行一些有用的操作,而不是等待整个资源可用。
如果浏览器设置了此指令,则服务器可以选择以相同的紧急程度同时服务所有增量请求。这将多个请求分布在连接带宽上,结果是所有请求都开始更早地处理,但总共需要更长时间才能完成。
如果浏览器未设置此指令,则表示它不会增量处理资源。在这种情况下,服务器应按顺序发送具有相同紧急程度的响应,顺序与生成其关联请求的顺序相同。
注意:服务器预计会忽略它们不理解的此头部上的指令。未来添加的新指令预计将与这些现有指令兼容,以便可以安全地忽略它们。
示例
设置资源紧急程度
以下示例显示了对 HTML 文件的请求。紧急程度未设置,因此默认为 3,i
为假。这是拥有其他资源的文档的正常设置。
: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 可扩展优先级方案 # header-field |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。