浅悉http1.0 、http1.1和http2.0的区别

1、HTTP1.0 HTTP 1.1主要区别html

1.1 长连接web

HTTP 1.0须要使用keep-alive参数来告知服务器端要创建一个长链接,而HTTP1.1默认支持长链接。算法

HTTP是基于TCP/IP协议的,建立一个TCP链接是须要通过三次握手的,有必定的开销,若是每次通信都要从新创建链接的话,对性能有影响。所以最好能维持一个长链接,能够用个长链接来发多个请求。缓存

1.2 节约带宽服务器

HTTP 1.1支持只发送header信息(不带任何body信息),若是服务器认为客户端有权限请求服务器,则返回100,不然返回401。客户端若是接受到100,才开始把请求body发送到服务器。网络

 

这样当服务器返回401的时候,客户端就能够不用发送请求body了,节约了带宽。并发

 

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只须要跟服务器请求另外的部分资源便可。这是支持文件断点续传的基础 性能

1.3HOST域spa

如今能够web server例如tomat,设置虚拟站点是很是常见的,也便是说,web server上的多个虚拟站点能够共享同一个ip和端口。code

HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

 

2、 HTTP 1.一、*HTTP2.0*主要区别

2.1 多路复用

HTTP2.0使用了多路复用的技术,作到同一个链接并发处理多个请求,并且并发请求的数量比HTTP1.1大了好几个数量级。

 

固然HTTP1.1也能够多创建几个TCP链接,来支持处理更多并发的请求,可是建立TCP链接自己也是有开销的。

 

TCP链接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。所以对应瞬时并发的链接,服务器的响应就会变慢。因此最好能使用一个创建好的链接,而且这个链接能够支持瞬时并发的请求。

 

2.2 数据压缩

HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

2.3 服务器推送

当咱们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端须要的资源一块儿推送到客户端,省得客户端再次建立链接发送请求到服务器端获取。这种方式很是合适加载静态资源。

服务器端推送的这些资源其实存在客户端的某处地方,客户端直接从本地加载这些资源就能够了,不用走网络,速度天然是快不少的。

 

img

服务端推送过来的资源,会统一放在一个网络与http缓存之间的一个地方,在这里能够理解为“本地”。当客户端把index.html解析完之后,会向本地请求这个资源。因为资源已经本地化,因此这个请求的速度很是快,这也是服务端推送性能优点的体现之一。