HTTP1.0、HTTP1.1与HTTP2.0的区别

一、HTTP1.0与HTTP1.1的区别

1. 长连接

  • HTTP 1.1支持长连接,每一个连接上可以传送多个请求和响应,默认开启Connection:Keep-Alive
  • HTTP1.0 默认为短连接,每次请求都需要建立一个TCP连接

2. 缓存

  • HTTP 1.0主要使用If-Modified-Since/Expires来做为缓存判断的标准
  • HTTP 1.1则引入了更多的缓存控制策略例如Entity tag / If-None-Match等更多可供选择的缓存头来控制缓存策略

3. 管道化

  • 基于HTTP1.1的长连接,使得请求管线化成为可能。管线化使得请求能够"并行"传输,但是响应必须按照请求发出的顺序依次返回,性能在一定程度上得到了改善

4. 增加主机字段

  • 使得一个服务器能够用来创建多个 Web 站点

5. 状态码

  • 新增了24个错误状态响应码

6. 带宽优化

  • HTTP1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能
  • HTTP 1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content)

二、HTTP2.0与HTTP1.1的区别

1. 二进制分顿

  • 在应用层(HTTP/2.0) 和传输层(TCP or UDP) 之间增加一个二进制分恢层,从而突破 HTTP1.1的性能限制,改进传输性能,实现低延迟和高吞吐量。

2.多路复用 (MultiPlexing)

  • 允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息,这个强大的功能则是基于“一进制分帧”的特性。

3. 首部压缩

  • HTTP1.1 不支持 header数据的压缩,HTTP/2.0 使用HPACK 算法对 header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。高效的压缩算法可以很大的压缩 header ,减少发送包的数量从而降低延迟

4. 服务端推送 (server push)

  • 在HTTP/2 中,服务器可以对客户端的一个请求发送多个响应,即服务器可以额外的向客户端推送资源,而无需客户端明确的请求。

猜你喜欢

转载自blog.csdn.net/daydayup858/article/details/133944002