本文根据个人理解描述了 HTTP2.0 的几个重大更新,并非全部更新。
1、二进制分帧层
首先,在应用层和传输层之间新增了一个层——二进制分帧层。在二进制分帧层,HTTP消息被分解为更小的、互不依赖的帧,然后乱序发送。最后在接收端进行重新组装。
在HTTP1.x中,如果想要并发进行多个HTTP请求,就需要依赖多个TCP连接来实现,然而HTTP1.x中对单个域名的TCP连接数量是有限制的。
而HTTP2.0有了二进制分帧后,HTTP2.0不再依赖多个TCP连接去并发多个请求了。同域名下所有通信都在单个TCP连接上完成,单个连接上可以承载多个并行交错的请求和响应的数据流。数据流以消息形式发送,消息由多个帧组成,多个帧可以乱序发送。(个人理解:更小的帧可以更快速地组成数据流。)
影响:TCP连接数大大减少,减少了延迟和内存消耗,也减少了网络拥塞。
2、服务器推送
服务端可以主动向客户端推送web资源,而不用等到客户端发起请求后,再去响应。这样也能提升页面的响应速度。并且客户端还有权利拒收,如果该web资源已经被浏览器缓存的话,那么就可以发送拒收帧来表示拒收该资源。