我可以使用 HTTP2 Server 推送机制来更新已经发送的资源吗?

Posted

技术标签:

【中文标题】我可以使用 HTTP2 Server 推送机制来更新已经发送的资源吗?【英文标题】:Can I use HTTP2 Server push mechanism to update a resource already sent? 【发布时间】:2017-03-04 10:20:46 【问题描述】:

我可以使用 HTTP2 Server 推送机制来更新客户端已知的资源吗?

例子:

我在https://myserver.org/myresource.json 下有一些资源返回"state": "off"

一旦状态从“关闭”变为“开启”,我想将"state": "on" 推送到同一网址下的客户端(即https://myserver.org/myresource.json)。

感谢您的支持!

【问题讨论】:

顺便说一句:对于那些对我问的原因感兴趣的人:我想摆脱 w3.org/Submission/2016/SUBM-viwi-protocol-20161213 中的 WebSocket 额外通道 【参考方案1】:

您可以推送它,但它只会更新客户端缓存,不会更改网页中的任何内容。为此,您需要客户端重新获取资源(通过 XHR/fetch),这可能会直接使用缓存中的值。

您可以在此处找到一些示例:https://www.igvita.com/2013/06/12/innovating-with-http-2.0-server-push/ 在用于服务器推送的客户端通知一章中。

我个人并没有发现它有太多用处,宁愿直接通过 websockets 或 SSE 发送更新的内容。

【讨论】:

嗯.. 这有点令人失望。但不知何故,我期待这样的事情,它的起源肯定是为了为网页预缓存资源

以上是关于我可以使用 HTTP2 Server 推送机制来更新已经发送的资源吗?的主要内容,如果未能解决你的问题,请参考以下文章

极客漫画:HTTP2 服务器推送

使用 .net http2 的 Apple 推送通知

Jetty HTTP2 服务器推送支持

是否可以进行Http2跨域推送请求?

Express http 2 服务器推送

带有 NSURLSession 的 Http/2 server_push