Skip to main content

7. The PRIORITY_UPDATE Frame (PRIORITY_UPDATE 帧)

PRIORITY_UPDATE 帧用于在发送请求后重新确定响应的优先级。此帧类型特定于 HTTP 版本,在第 7.1 节和第 7.2 节中分别为 HTTP/2 和 HTTP/3 定义。

PRIORITY_UPDATE 帧携带优先级参数,格式与 Priority HTTP 头字段(第 5 节)相同。这些参数覆盖之前在请求中发送的参数,无论是通过 Priority 头字段还是通过另一个 PRIORITY_UPDATE 帧发送的参数。

中介不得 (MUST NOT) 将 PRIORITY_UPDATE 帧转发到下一跳。中介可以使用接收到的 PRIORITY_UPDATE 帧中的信息来更改转发的请求或响应的优先级,或者可以选择忽略该帧。

服务器可以发送 PRIORITY_UPDATE 帧来建议中介应如何优先处理其响应。服务器应该 (SHOULD) 将 PRIORITY_UPDATE 帧发送到已知理解该帧的中介。

7.1. HTTP/2 PRIORITY_UPDATE Frame (HTTP/2 PRIORITY_UPDATE 帧)

HTTP/2 PRIORITY_UPDATE 帧(类型=0x10)在 HTTP/2 连接上传送优先级参数。帧的格式和语义在 [HTTP/2] 中定义。

PRIORITY_UPDATE 帧标识要重新确定优先级的请求流,并携带要应用的优先级参数,编码为 Dictionary。

HTTP/2 PRIORITY_UPDATE 帧的有效载荷包含以下字段:

  • Prioritized Stream ID(优先流 ID):31 位流标识符,用于标识要重新确定优先级的请求流(参见 [HTTP/2] 第 5.1.1 节)。

  • Priority Field Value(优先级字段值):包含优先级参数的 Dictionary,编码为一系列 ASCII 字符。

客户端可以 (MAY) 在任何状态下为流发送 PRIORITY_UPDATE 帧,尽管发送应在流转换到"closed"状态之前完成(参见 [HTTP/2] 第 5.1 节)。

服务器可以 (MAY) 在任何状态下发送 PRIORITY_UPDATE 帧。

7.2. HTTP/3 PRIORITY_UPDATE Frame (HTTP/3 PRIORITY_UPDATE 帧)

HTTP/3 PRIORITY_UPDATE 帧(类型=0xF0700 或 0xF0701)在 HTTP/3 连接上传送优先级参数。

帧类型 0xF0700 用于请求流,0xF0701 用于推送流。

HTTP/3 PRIORITY_UPDATE 帧的有效载荷包含:

  • Prioritized Element ID(优先元素 ID):使用可变长度整数编码的流 ID 或推送 ID。

  • Priority Field Value(优先级字段值):包含优先级参数的 Dictionary。

客户端可以 (MAY) 在任何时候为请求流发送 PRIORITY_UPDATE 帧。

服务器可以 (MAY) 在任何时候发送 PRIORITY_UPDATE 帧以指示其响应应如何被优先处理。