push
配置伺服器使用 HTTP/2 伺服器推送預先將資源發送給客戶端。
可以通過指定回應的 Link header 來連結資源以進行伺服器推送。此指令將自動推送上游 Link header 中以下列格式描述的資源
<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