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