Skip to content

http 1.0, 1.1, 2 的区别

1. http1.0

浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个 TCP 连接; 解决方案: 添加头 Connection: keep-alive

2. http1.1

  1. 持久连接 TCP 连接默认不关闭, 不用声明 Connection: keep-alive, 同一个域名, 大多数可以建立 6 个持久化连接; 所以可以分多个域名指向同一个服务器, 这样能够并发的长连接数更多了;

  2. 管道机制 即在同一个 TCP 连接里面,客户端可以同时发送多个请求;

  3. 新增请求方式

  • PUT 使用请求中的负载创建或者替换目标资源
  • DELETE
  • OPTIONS
  • TRACE
  1. http1.1 的缺点: 队头堵塞 问题; 服务器只有处理完一个请求,才会接着处理下一个请求。

3. HTTP/2

  1. 二进制协议 头信息和数据体都是二进制,并且统称为”帧”:头信息帧和数据帧。二进制解析高效, 错误少;

  2. 多路复用 Headers + Body 都拆分成小的二进制帧, 通信双方都可以给对方发送二进制帧,这种二进制帧的双向传输的序列,也叫做流(Stream)。HTTP/2 用流来在一个 TCP 连接上来进行多个数据帧的通信,这就是多路复用的概念。

  3. 报头压缩 比如 cookie 每次都要发送; 而 HTTP/2 头信息使用 gzip 或 compress 压缩后再发送, 客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同样字段了,只需发送索引号。

  4. 服务器推送功能 比如请求 html 文件, 服务器在返回 HTML 的基础上, 将 HTML 引用的其它资源文件一起返回给客户端, 减少客户端等待;