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