由于bi存在性能问题需要优化,供应商提出增加HTTP/2 和 Websocket两种配置,以前不清楚,就查询一些资料,了解这两项技术。
这篇文章讲的比较详细:
它是 google 提出的开源协议,旨在提高网络传输效率
它是二进制协议
它采用多路复用解决 HTTP 1.1 的 head-of-line blocking (HOL Blocking)问题(较慢的请求阻塞其它请求的问题)
它通过压缩 http 头提高效率
它支持全双工,因此可以使用 Server Push 推送到客户端
HTTP/2 | WebSocket | |
---|---|---|
Headers 头 | Compressed (HPACK) 请求头部压缩 | None 无 |
Binary 二进制 | Yes | Binary or Textual 二进制或文本都支持 |
Multiplexing 多路复用 | Yes | Yes |
Prioritization 优先化 | Yes | No |
Compression 压缩 | Yes | Yes |
Direction 方向 | Client/Server + Server Push (Server Push只能浏览器消化,不支持API,也就是代码无法使用) | Bidirectional 双向 |
Full-duplex 全双工 | Yes | Yes |
HTTP/2 Servers are encouraged to maintain open connections for as long as possible but are permitted to terminate idle connections if necessary. When either endpoint chooses to close the transport-layer TCP connection, the terminating endpoint SHOULD first send a GOAWAY (Section 6.8) frame so that both endpoints can reliably determine whether previously sent frames have been processed and gracefully complete or terminate any necessary remaining tasks.
HTTP2 vs Websocket 显而易见,http2 在浏览器服务器上限制颇多,而 websocket 基本普及。
再来看看SSE, 支持程度仍然不如websocket。
HTTP/2 完全不能替代websocket,各有各的适用场景。我个人偏好,做app还是偏向于websocket,参看我的另外一博文介绍Meteor.
参考:其他人测试http1与2的性能对比。HTTP2 详解_OkidoGreen的博客-CSDN博客_http2