文档
一个 项目

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