HTTP2服务器推送怎么知道推送什么?

How does HTTP2 server push know what do push?

服务器推送的工作原理是在响应请求后立即发送js,css,图像等,而不是等待客户端接收html,解析它并请求资源,节省往返行程。但是为 example.com/about 推送 js、css、图像、字体等,而客户端在一分钟前获取 example.com 时已经下载了这些相同的文件,这完全是对带宽的浪费,因为客户已经有了这些文件。

在服务器端为每个请求保持状态看起来很昂贵,而且不可能做到这一点,因为 HTTP 是无状态的。据推测,客户会在随后的访问中重新请求 html,以查看是否有任何更改。

HTTP2 服务器如何知道要推送哪些文件?

有几种方法可以做到这一点。例如,浏览器可以重置流。或者可以使用缓存摘要。

这里有更多相关信息:

https://www.shimmercat.com/blog/cache-digests/

就在今天,一些人正在就缓存摘要进行有趣的对话:

https://lists.w3.org/Archives/Public/ietf-http-wg/2016AprJun/0371.html