您当前的位置:首页 > 计算机 > 服务器 > 网络服务

HTTP 的版本

时间:12-14来源:作者:点击数:

http 1.1

  • 持久连接。 HTTP/1.1 默认开启持久连接,在 TCP 连接建立后不立即关闭,让多个 HTTP 请求得以复用。
  • 管线化技术。 HTTP/1.1 中,多个 HTTP 请求不用排队发送,可以批量发送,这就解决了 HTTP 队头阻塞问题。但批量发送的 HTTP 请求,必须按照发送的顺序返回响应,相当于问题解决了一半,仍然不是最佳体验。
  • 支持响应分块。 HTTP/1.1 实现了流式渲染,响应端可以不用一次返回所有数据,可以将数据拆分成多个模块,产生一块数据,就发送一块数据,这样客户端就可以同步对数据进行处理,减少响应延迟,降低白屏时间。 Bigpipe 的实现就是基于这个特性,具体是通过定义 Transfer-Encoding 头来实现的。
  • 增加 Host 头。 HTTP/1.1 实现了虚拟主机技术,将一台服务器分成若干个主机,这样就可以在一台服务器上部署多个网站了。 通过配置 Host 的域名和端口号,即可支持多个 HTTP 服务:Host::
  • 其他扩展。 增加 Cache-Control、E-Tag 缓存头。 增加 PUT、PATCH、HEAD、 OPTIONS、DELETE 请求方法。

http 2.0

  • 请求优先级 多个 HTTP 请求同时发送时,会产生多个数据流,数据流中有一个优先级的标识,服务器端可以根据这个标识来决定响应的优先顺序。
  • 多路复用 TCP 传输时,不用按照 HTTP 的发送顺序进行响应,可以交错发送,接收端根据帧首部的标识符,就能找到对应的流,进而重新组合得到最终数据。
  • 服务器端推送 HTTP/2 允许服务器未经请求,主动向客户端发送资源,并缓存到客户端中,以避免二次请求。 HTTP/1.1 中请求一个页面时,浏览器会先发送一个 HTTP 请求,然后得到响应的 HTML 内容并开始解析,如果发现有 <script src="xxxx.js"> 标签,则会再次发起 HTTP 请求获取对应的 JS 内容。而 HTTP/2 可以在返回 HTML 的同时,将需要用到的 JS、CSS 等内容一并返回给客户端,当浏览器解析到对应标签时,也就不需要再次发起请求了。
  • 头部压缩 HTTP/1.1 的头部字段包含大量信息,而且每次请求都得带上,占用了大量的字节。 HTTP/2.0 中通信双方各自缓存一份头部字段表,如:把 Content-Type:text/html 存入索引表中,后续如果要用到这个头,只需要发送对应的索引号就可以了。

http 3.0

将传输层替换为 QUIC,通过改进的拥塞控制、流量控制、0-RTT 建连、传输层多路复用、连接迁移等特性,进一步提升了 HTTP 传输效率。

  • 传输层连接更快。
  • 传输层多路复用。
  • 改进的拥塞控制。
  • 优化的流量控制。
  • 加密认证的报文。
  • 连接迁移。
  • 前向纠错机制。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐