文档
一个 项目

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