HTTP的现状
HTTP/1.1自从1999年发布以来已经很长时间了,随着互联网的爆炸式发展,从当初网页内容以文本为主,到现在以富媒体(如图片、声音、视频)为主。聊天、视频直播 等实时性应用越来越多, HTTP/1.1协议的特性,已经无法满足现代网络的需求了。
HTTP2.0是自1999年http1.1发布后的首个更新。
HTTP/2 相比于 HTTP/1.1,大幅度提高了网页的性能,只需要服务端升级到HTTP/2 协议就可以减少很多之前需要做的性能优化工作。
保持与HTTP 1.1语义的向后兼容性也是HTTP/2 的一个关键目标。
兼容问题以及如何优雅降级是国内还不普遍使用的原因。
现在,几乎所有互联网上的内容都采用了HTTP 1.1作为通信协议。
HTTP/1.1的缺陷
HTTP 1.1包含了太多细节和可选的部分,这让它变得过于庞大。
HTTP 1.1对网络延迟非常敏感。部分原因是HTTP pipelining还存有很多问题,大部分桌面浏览器选择默认关闭HTTP pipelining这一功能。
线头阻塞(Head-of-line blocking)
HTTP pipelining是这样一种技术:多个HTTP请求放到一个TCP连接中一一发送,而且不需要等待服务器对前一个请求的响应;客户端还是要按照发送请求的顺序来接收响应。这就像在超市收银台排队时一样,你并不知道前面的顾客会用时多久,如果前一个请求非常耗时(顾客磨蹭),那么后续请求都会受到影响,这就是所谓的线头阻塞(head-of-line blocking)。
近几年来网络带宽增长非常快,然而我们并没有看到网络延迟有对应程度的降低。网络延迟问题主要由于线头阻塞又