来,首先,简单的总结下http2.0, 一个新事物的诞生必然带来一些革命性的变化,以及一些能够被大家放大的小变化.简单的来说, 她的出现,肯定是会提升web的性能, 互联网时代,性能是我们最考究的事情了.对于我们前端开发来说, 提升速度, 减少网络延迟, 这就已经很棒了,但是这对于http2.0来说,还远远不够.
1. 多路复用(Multiplexing)
多路复用是能够允许通过单一的HTTP/2 连接发起多重的请求-响应消息的.
为什么会这么说,不知道同学们有没有发现, 再HTTP1.1时代, 浏览器的客户端再同一时间,针对与同一个域名下的请求是有一定的数量限制的.如图1, 不同的浏览器的限制不同的.
来源: Roundup on Parallel Connections
这就导致了在同一个域名下,如果发出的请求过多,将会被阻塞. 对于这种解决方案, 现在比较成熟的有, 对于同一个站点的静态资源请求, 通常都是放在CDN,或者在多个CDN上, 这样能够有效的减少请求的压力.
而现在HTTP/2.0 的多路复用就能够允许同时通过单一的HTTP/2连接发起多重的请求-响应消息.如图2
Http/2.0之所以能够实现多流并行而没有去以来多个TCP连接, 其实是把http通信的基本单位缩小为一个一个的帧, 能够并行的在同一个TCP连接上交换消息.
总结
1. 单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大
2. 由于 TCP 连接的减少而使网络拥塞状况得以改善,同时慢启动时间的减少,使拥塞和丢包恢复速度更快