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