HTTP 2.0 新特性
2018-05-15 16:31:03 5 举报
AI智能生成
HTTP2 新特性简述
作者其他创作
大纲/内容
多路复用(Multiplexing)
允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。<br>因此 HTTP/2 可以很容易的去实现多流并行而不用依赖建立多个 TCP 连接,<br>HTTP/2 把 HTTP 协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息。<br>并行地在同一个 TCP 连接上双向交换消息。
图
二进制分帧
在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。<br>在二进制分帧层中, HTTP/2 会将所有传输的信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码 ,<br>其中 HTTP1.x 的首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面。 <br>HTTP/2 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。<br>
图
HTTP2.0相对于1.X优势
HTTP/2 采用<b>二进制格式传输数据</b>,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。<br>
HTTP/2 对消息头<b>采用 HPACK 进行压缩传输</b>,能够节省消息头占用的网络的流量。<br>而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。<br>
<b>多路复用</b>,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。<br>HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,<br>而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。<br>
<b>Server Push</b>:服务端能够更快的把资源推送给客户端。<br>例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求。<br>当客户端需要的时候,它已经在客户端了。
ServicePush
当服务端需要主动推送某个资源时,便会发送一个 Frame Type 为 PUSH_PROMISE 的 Frame,<br>里面带了 PUSH 需要新建的 Stream ID。意思是告诉客户端:接下来我要用这个 ID 向你发送东西,客户端准备好接着。<br>客户端解析 Frame 时,发现它是一个 PUSH_PROMISE 类型,便会准备接收服务端要推送的流。<br><br>
0 条评论
下一页