浏览器端建议 HTTP/2 服务器推送

Browser-side suggested HTTP/2 server push

浏览器客户端是否可以使用任何特定的规范进程来动态鼓励服务器在客户端需要实际使用它们之前使用 HTTP/2 服务器推送将其他请求的项目推送到浏览器缓存中(顺便说一句,这里不是在谈论服务器端事件或 WebSockets,而是 HTTP/2 服务器推送)?

目前还没有正式规定浏览器请求服务器推送资源。

浏览器可以弄清楚需要哪些次要资源来呈现主要资源,并可能在使用 HTTP header 的后续请求中机会性地将此信息发送到服务器,但正如我所说,这不是尚未指定。

[免责声明,我是 Jetty HTTP/2 维护者] 另一方面,服务器可以了解浏览器请求的资源,并可以构建相关资源的缓存,它们可以将这些资源推送给客户端。

Jetty 提供了一个可配置的PushCacheFilter that implements the strategy above, and implemented a HTTP/2 Push Demo

服务器推送的objective是服务器在请求URL(例如HTML页面)的同时发送额外的文件(例如javascripts,css)在浏览器知道需要什么相关文件之前发送给浏览器,从而节省往返并提高网页加载速度。如果浏览器已经知道需要什么资源,它可以使用普通的 HTTP 调用请求。