文档
一个 项目

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