在 http1.x 时代,我们在发起请求的时候,因为浏览器的限制,一次最多是可以处理 6-8 个请求,当请求被阻塞的时候,后面的请求就只能一直排队,在某些网络不好或者一下子有很多并发的请求的时候,就会出现请求阻塞的问题
在开启了 H2 以后请求就会在一个管道里并发处理,请求不会依赖前面的请求结束,而且可以并发响应。 这是因为 H2 对于同一个域名下的请求是基于流的,理论上是所有的请求都可以基于一个 HTTP 链接进行请求,实际上也是这么做的。所以这一个请求链接就可以完成页面加载和后期数据请求,不用担心数据流错乱。
H2 并不是把 tcp 传输层改成了并行链接,TCP 传输层的阻塞是没有解决的。TCP 依旧是一个独木桥,仅仅是在应用层 HTTP 协议上进行了优化,但也正是这些重要的优化使 HTTP2.0 成为了全双工的协议,单连接多资源的方式克服了 TCP 慢启动带来的负面影响,更加有效地利用了 TCP 连接,使连接性能得到了极大的提升。也充分地利用了 TCP 协议的带宽来降低 HTTP 延迟,并且减少了连接的内存占用,单个连接的吞吐量增大,网略阻塞和丢包的恢复速度增快等