push
配置服务器使用 HTTP/2 服务器推送(server push)预先向客户端发送资源。
可以通过在响应中指定 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
因为许多请求在没有这些头时会失败;这些头无需手动配置。
推送请求在内部被虚拟化,因此非常轻量。
Syntax
push [<matcher>] [<resource>] {
[GET|HEAD] <resource>
headers {
[+]<field> [<value|regexp> [<replacement>]]
-<field>
}
}
- <resource> 是要推送的目标 URI 路径。如果在块内使用,可选地在前面加上方法(GET 或 POST;默认是 GET)。
- <headers> 使用与
header指令 相同的语法来操作推送请求的头部。一些头会被默认携带,无需显式配置(见上文)。
Examples
推送响应中由 Link 头描述的任何资源:
push
相同,但也为所有请求推送 /resources/style.css:
push * /resources/style.css
仅当客户端请求 /foo.html 时才推送 /foo.jpg:
push /foo.html /foo.jpg