文書
a project

push

サーバが HTTP/2 サーバプッシュを使用してクライアントにリソースを先回りして送信するように設定します。

リソースは応答の Link ヘッダを指定することでサーバプッシュにリンクできます。この指令は、次の形式でアップストリームの Link ヘッダが説明するリソースを自動的にプッシュします

  • <resource>; as=script
  • <resource>; as=script,<resource>; as=style
  • <resource>; nopush
  • <resource>;<resource2>;...

ここで、<resource> は正スラッシュ / で始まり (つまり、同じホストの URI パスです) 。プッシュできるのは同じホストのリソースのみです。リンクされたリソースが外部にあるか、または nopush 属性がある場合は、プッシュされません。

デフォルトでは、プッシュリクエストには、元のリクエストからコピーしても安全と見なされるヘッダがいくつか含まれます

  • Accept-Encoding
  • Accept-Language
  • Accept
  • Cache-Control
  • User-Agent

これらのヘッダがないとリクエストの多くが失敗すると想定されるため、手動で構成する必要はありません。

プッシュリクエストは内部で仮想化されるため、非常に軽量です。

構文

push [<matcher>] [<resource>] {
	[GET|HEAD] <resource>
	headers {
		[+]<field> [<value|regexp> [<replacement>]]
		-<field>
	}
}
  • <resource> はプッシュするターゲット URI パスです。ブロック内で使用する場合、メソッド (GET または POST; GET が既定) が前に付く場合があります。
  • <headers> は、header ディレクティブ と同じ構文を使用して、プッシュリクエストのヘッダを操作します。一部のヘッダはデフォルトで引き継がれ、明示的に構成する必要はありません (上を参照)。

応答内のLinkヘッダで記述されたリソースをプッシュする

push

同じですが、さらにすべてのリクエストの/resources/style.cssをプッシュする

push * /resources/style.css

/foo.htmlがクライアントによってリクエストされたときにのみ/foo.jpgをプッシュする

push /foo.html /foo.jpg