HTTP 2.0与HTTP 1.1区别
本文我们简单比较一下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和发送所有内嵌资源的请求。服务器推送服务通过推送
那些它认为客户端将会需要的内容到客户端的缓存中,以此来避免往返的延迟。
[参考]