HTTP 2.0与HTTP 1.1区别

一、什么是HTTP 2.0

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

 

二、与HTTP 1.1相比,主要区别包括

  1. HTTP/2采用二进制格式而非文本格式
  2. HTTP/2是彻底多路复用的,而非有序并阻塞的——只需一个链接便可实现并行
  3. 使用报头压缩,HTTP/2下降了开销
  4. HTTP/2让服务器能够将响应主动“推送”到客户端缓存中

 

三、HTTP/2为何是二进制?

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

 

四、为何 HTTP/2 须要多路传输?

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

缓存

五、消息头为何须要压缩?

假定一个页面有80个资源须要加载(这个数量对于今天的Web而言仍是挺保守的), 而每一次请求都有1400字节的消息头(着一样也并很多见,由于Cookie和引用等东西的存在), 至少要7到8个来回去“在线”得到这些消息头。这还不包括响应时间——那只是从客户端那里获取到它们所花的时间而已。这全都因为TCP的慢启动机制,它会基于对已知有多少个包,来肯定还要来回去获取哪些包 – 这很明显的限制了最初的几个来回能够发送的数据包的数量。相比之下,即便是头部轻微的压缩也能够是让那些请求只需一个来回就能搞定——有时候甚至一个包就能够了。这种开销是能够被节省下来的,特别是当你考虑移动客户端应用的时候,即便是良好条件下,通常也会看到几百毫秒的来回延迟。

服务器

六、服务器推送的好处是什么?

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

 

七、参考资料

    1. 维基百科-HTTP/2
    2. InfoQ-HTTP/2规范发布获批
    3. HTTP/2 常见问题回答