http/2服务器推送的大多数用例是先发制人地将资源文件(例如javascript和css文件)推送到浏览器。我想知道是否可以使用HTTP/2服务器推送发送动态负载,如JSON文件到客户端应用程序?从http2-spec,它没有提到任何关于这一点。任何人都可以详细说明这一点吗?为什么或者为什么不?HTTP/2推送JSON有效负载
3
A
回答
6
HTTP/2并不是用来代替websockets,因为你提出了一个请求(例如一个网页),并且可能会获得一些资源(例如,网页,显示网页所需的CSS,需要的JavaScript运行该网页...等)。
因此,HTTP/2并不是真正的双向性,因为它仍然会响应初始请求。
所以如果你打算发送JSON请求来响应初始请求,那很好 - 它只是另一个资源,就像CSS和JavaScript一样。
但是,如果您打算继续打开频道以不断发送更多JSON有效内容以使您的页面保持最新状态,那么这不是HTTP/2的目标。这就是websockets的用途。
这个问题有相对的WebSockets对HTTP/2的一些进一步的细节:Does HTTP/2 make websockets obsolete?
0
是的,你可以使用HTTP/2推派任何类型的资产。但请记住以下几点:
由于BazzaDP说,HTTP/2 Push is not a push notification mechanism。但HTTP/2非常适合做长轮询,然后你有内容编码压缩,加密,HTTP头和流量控制,所以对于90%的情况,你可以并可能应该跳过websockets。请注意,进行长轮询时,HTTP/2 Push不是必需的。另外请注意,有一些名称为Server Sent Events的类型是浏览器支持的长轮询版本。
对于应用程序而言,HTTP/2推送是非常透明的。这意味着您必须执行推送和请求您的应用程序中的资源。
现在,只有可缓存的内容才可用于应用程序。这意味着您需要在动态生成的JSON响应中设置缓存标头。大概你可以设置一个短暂的到期时间,或者一个很长的时间,但是在一个动态的URL下。
相关问题
- 1. 自定义百度推送JSON负载
- 2. 试图实现HTTP2推送
- 3. 处理推送通知有效负载数据
- 4. 检查iOS推送通知有效负载
- 5. VoIP APNS推送有效负载是否包含SIP邀请?
- 6. 在应用中推送有效负载信息
- 7. HTTP2服务器推送预加载不发送cookie数据
- 8. 通过POST(PHP)发送JSON有效负载
- 9. json有效负载通过零成员
- 10. TweepError:无法解析JSON有效负载:
- 11. APNS PHP JSON有效负载结构
- 12. libwebsocket发送有效负载限制
- 13. IOS推送通知:发送此有效负载时没有得到任何推送
- 14. 苹果推送通知:在有效负载中发送两次消息
- 15. Http2服务器推送支持
- 16. HTTP2推送脚本标签在res.end
- 17. HTTP2推送未使用的网页
- 18. HTTP2在Chrome中推送XMLHttpRequest缓存Miss
- 19. 推送通知的最小负载?
- 20. 推送通知有效负载未保存在某些设备上
- 21. GCM将不同的有效负载推送到不同的设备
- 22. 我们可以用纯文本(无JSON)发送推送通知负载吗?
- 23. Javascript对象有效负载
- 24. Lucene 3.1有效负载
- 25. 使用表格如何发送邮件的有效负载为JSON
- 26. 带有JSON有效负载的Google Apps脚本UrlFetchApp
- 27. IBM推送通知:无效的Json
- 28. REST PUT方法的推荐/有效请求负载是什么?
- 29. APNS http2 API与http2卸载应用
- 30. http2:推承诺数据
[这个答案](https://stackoverflow.com/a/42465368/861209)的问题[是否HTTP/2使WebSockets的过时了吗?](https://stackoverflow.com/questions/28582935/does-http-2-make-websockets-obsolete)说:“我认为HTTP/2对大多数使用情况都会过时的websockets,但可能并非全部”,并且“...... HTTP/2是否能更好地启用浏览器中的双向流式传输,我认为是的,它确实是“。 –
这是推动HTTP/2超出其初衷的一种有趣的方式,并且可能在某些情况下工作(gRPC是这种应用程序的一个有趣的概念版本),但是我认为它对于大多数应用程序来说可能是矫枉过正,而与较轻的websocket风格实现。同样,这一切都必须建立在HTTP/2之上,因此,回到原来的问题,在初始响应之后,没有简单的方法可以在任何HTTP/2客户端或服务器实施中本地推送动态有效载荷,例如JSON文档。 –
那么我应该说“任何当前的HTTP/2客户端和服务器实现,我知道”:-) –