メインコンテンツまでスキップ

7. The PRIORITY_UPDATE Frame (PRIORITY_UPDATE フレーム)

PRIORITY_UPDATEフレームは、リクエストが送信された後にレスポンスの優先順位を再設定するために使用されます。このフレームタイプはHTTPバージョン固有であり、HTTP/2とHTTP/3に対して第7.1節と第7.2節でそれぞれ定義されています。

PRIORITY_UPDATEフレームは、Priority HTTPヘッダーフィールド(第5節)と同じ形式で優先度パラメータを運びます。これらのパラメータは、Priorityヘッダーフィールドまたは別のPRIORITY_UPDATEフレームを介して送信されたかどうかにかかわらず、リクエストに対して以前に送信されたパラメータを上書きします。

中継装置は、PRIORITY_UPDATEフレームを次のホップに転送してはなりません (MUST NOT)。中継装置は、受信したPRIORITY_UPDATEフレーム内の情報を使用して、転送されたリクエストまたはレスポンスの優先度を変更してもかまいませんし (MAY)、フレームを無視することを選択してもかまいません (MAY)。

サーバーは、中継装置がレスポンスをどのように優先すべきかを提案するためにPRIORITY_UPDATEフレームを送信してもかまいません (MAY)。サーバーは、それらを理解することが知られている中継装置にPRIORITY_UPDATEフレームを送信すべきです (SHOULD)。

7.1. HTTP/2 PRIORITY_UPDATE Frame (HTTP/2 PRIORITY_UPDATE フレーム)

HTTP/2 PRIORITY_UPDATEフレーム(type=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文字のシーケンスとしてエンコードされます。

クライアントは、任意の状態でストリームに対してPRIORITY_UPDATEフレームを送信してもかまいませんが (MAY)、ストリームが"closed"状態に遷移する前に送信すべきです([HTTP/2]の第5.1節を参照)。

サーバーは、任意の状態でPRIORITY_UPDATEフレームを送信してもかまいません (MAY)。

7.2. HTTP/3 PRIORITY_UPDATE Frame (HTTP/3 PRIORITY_UPDATE フレーム)

HTTP/3 PRIORITY_UPDATEフレーム(type=0xF0700または0xF0701)は、HTTP/3接続上で優先度パラメータを伝達します。

フレームタイプ0xF0700はリクエストストリームに使用され、0xF0701はプッシュストリームに使用されます。

HTTP/3 PRIORITY_UPDATEフレームのペイロードには以下が含まれます:

  • Prioritized Element ID(優先要素ID):可変長整数エンコーディングを使用してエンコードされたストリームIDまたはプッシュID。

  • Priority Field Value(優先度フィールド値):優先度パラメータを含むDictionary。

クライアントは、リクエストストリームに対していつでもPRIORITY_UPDATEフレームを送信してもかまいません (MAY)。

サーバーは、レスポンスをどのように優先すべきかを示すために、いつでもPRIORITY_UPDATEフレームを送信してもかまいません (MAY)。