本文我们简单比较一下HTTP/2.0与HTTP/1.1的区别

1. 什么是HTTP 2.0

HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),是HTTP协议的第二个主要版本,使用于万维网。HTTP/2.0是HTTP协议自1999年HTTP/1.1 发布后的首个更新,主要基于SPDY协议(是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)。

2. 与HTTP/1.1的区别

HTTP/2.0与HTTP/1.1的区别主要有:

  • HTTP/2.0采用二进制格式而非文本格式

  • HTTP/2.0是完全多路复用的,而非有序并阻塞的—-只需一个连接即可实现并行

  • 使用报头压缩,HTTP/2.0降低了开销

  • HTTP/2.0让服务器可以将响应主动推送到客户端缓存中

3. HTTP/2.0为什么是二进制?

比起像HTTP/1.x这样的文本协议,二进制协议解析起来更高效,线上更紧凑,更重要的是错误更少

4. 为什么HTTP/2.0需要多路复用?

HTTP/1.x有个问题叫线端阻塞(head-of-line blocking),它是指一个连接(connection)一次只提交一个请求的效率比较高,多了就会变慢。HTTP/1.1试过用流水线(pipelining)来解决这个问题,但是效果并不理想(数据量较大或者速度较慢的响应,会阻塞排在它后面的请求)。此外,由于网络媒介(intermediary)和服务器不能很好的支持流水线,导致部署起来困难重重。而多路复用(Multiplexing)能很好的解决这些问题,因为它能同时处理多个消息的请求和响应;甚至可以在传输过程中将一个消息跟另外一个掺杂在一起。所以客户端只需要一个连接就能加载一个页面。

5. 消息头为什么需要压缩?

HTTP 协议不带有状态,每次请求都必须附上所有信息。所以,请求的很多字段都是重复的,比如Cookie和User Agent,一模一样的内容,每次请求都必须附带,这会浪费很多带宽,也影响速度。

HTTP/2 对这一点做了优化,引入了头信息压缩机制(header compression)。一方面,头信息使用gzip或compress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

6. 服务器推送的好处是什么?

当浏览器请求一个网页时,服务器将会返回HTML,在服务器开始发送JavaScript、图片和CSS前,服务器需要等待浏览器解析HTML和发送所有内嵌资源的请求。服务器推送服务通过推送那些它认为客户端将会需要的内容到客户端的缓存中,以此来避免往返的延迟。



[参考]

  1. HTTP 2.0与HTTP 1.1区别

  2. HTTP1.0与HTTP1.1与HTTP2.0区别