详解HTTP2四大核心特性( 二 )

HTTP/1.1自从1997年发布以来,我们已经使用HTTP/1.x 相当长一段时间了,但是随着近十年互联网的爆炸式发展,从当初网页内容以文本为主,到现在以富媒体(如图片、声音、视频)为主,而且对页面内容实时性高要求的应用越来越多(比如聊天、视频直播),于是当时协议规定的某些特性,已经无法满足现代网络的需求了。

二、HTTP/1.1的缺陷

1.高延迟--带来页面加载速度的降低

虽然近几年来网络带宽增长非常快,然而我们却并没有看到网络延迟有对应程度的降低。网络延迟问题主要由于队头阻塞(Head-Of-Line Blocking),导致带宽无法被充分利用。

详解HTTP2四大核心特性

队头阻塞是指当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞,会导致客户端迟迟收不到数据。针对队头阻塞,人们尝试过以下办法来解决:

Spriting合并多张小图为一张大图,再用Java或者CSS将小图重新“切割”出来的技术。内联(Inlining)是另外一种防止发送很多小图请求的技巧,将图片的原始数据嵌入在CSS文件里面的URL里,减少网络请求次数。.icon1 { background: url(data:image/png;,) no-repeat; } .icon2 { background: url(data:image/png;,) no-repeat; } 拼接(Concatenation)将多个体积较小的Java使用webpack等工具打包成1个体积更大的Java文件,但如果其中1个文件的改动就会导致大量数据被重新下载多个文件。将同一页面的资源分散到不同域名下,提升连接上限。 Chrome有个机制,同一个域名同时最多只能建立6个TCP连接,如果在同一个域名下同时有10个请求发生,那么其中4个请求会进入排队等待状态,直至进行中的请求完成。2.无状态特性--带来的巨大HTTP头部

推荐阅读