HTTP 1.0,HTTP1.1与HTTP2.0的主要区别

HTTP 1.0 与 HTTP1.1 的主要区别

  1. 长连接
  2. 节约带宽
  3. HOST域

HTTP1.1 与 HTTP 2.0的主要区别

  1. 多路复用
  2. 二进制分帧
  3. 首部压缩
  4. 服务器推送

HTTP 1.0 与 HTTP1.1 的主要区别

  1. 长连接
    HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。
    HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用一个长连接来发多个请求。
    TCP协议是怎样三次握手的,以及为什么要握手,不握手又会怎么样? < 点击跳转 >

  2. 节约带宽
    HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接收到100,才开始把请求body发送到服务器。
    这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。
    另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。

  3. HOST域
    现在可以用web server(例如tomat),设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。
    HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

HTTP1.1 与 HTTP 2.0的主要区别

HTTP 2.0的出现,相比于HTTP 1.x,大幅度的提升了web性能。在与HTTP/1.1完全语义兼容的基础上,进一步减少了网络延迟。而对于前端开发人员来说,无疑减少了在前端方面的优化工作。

  1. 多路复用
    允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
    众所周知,在HTTP/1.1协议中,浏览器客户端在同一时间针对同一域名的请求有一定数据限制。超过限制数目的请求会被阻塞。
    HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。
    当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。
    TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。
    在过去,HTTP性能优化的关键并不在于高带宽,而是低延迟。
    单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大
    由于 TCP 连接的减少而使网络拥塞状况得以改善,同时慢启动时间的减少,使拥塞和丢包恢复速度更快

  2. 二进制分帧
    在不改动HTTP/1.x的语义、语法、状态吗、URI以及首部字段……的情况下,HTTP/2是如何作做到“突破HTTP1.1的性能限制,改进传输性能,实现低延迟和高吞吐量”的?
    关键之一就是在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。

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

  4. 服务器推送
    服务端推送是一种在客户端请求之前发送数据的机制。
    在HTTP/2中,服务器可以对客户端的一个请求发送多个响应。
    Server Push 让HTTP1.x时代使用内嵌资源的优化手段变得没有意义;
    意思是说,当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。
    服务器推送可以缓存,并且在遵循同源的情况下,不同页面之间可以共享缓存。
    因此当客户端需要的数据已缓存时,客户端直接从本地加载这些资源就可以了,不用走网络,速度自然是快很多的

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_26340749/article/details/80881480