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