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