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 [<匹配器>] [<资源>] {
[GET|HEAD] <资源>
headers {
[+]<字段> [<值|正则> [<替换值>]]
-<字段>
}
}
- <资源> 是要推送的目标 URI 路径。如果在块内使用,可以选择在前面加上方法(GET 或 POST;默认为 GET)。
- <headers> 使用与
header
指令 相同的语法操作推送请求的头部。某些头部默认会被继承,无需显式配置(见上文)。
示例
推送响应中由 Link
头部描述的任何资源:
push
相同配置,但同时为所有请求推送 /resources/style.css
:
push * /resources/style.css
仅当客户端请求 /foo.html
时推送 /foo.jpg
:
push /foo.html /foo.jpg