HTTP2.0 新增的特性主要有二进制分帧,多路复用,首部压缩,服务端推送,请求优先级等。

二进制分帧

HTTP/2 性能增强的核心。HTTP/2 在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层,将所有传输的信息分割成更小的消息和帧,并对它们采用二进制格式的编码。

多路复用

在 HTTP/1.1 中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量的限制。超过限制数目的请求会被阻塞。

有了新的分帧机制后,HTTP/2 不再依赖多个 TCP 连接去实现多流并行了。可以在一个连接中发起多重请求,响应信息。

首部压缩

在 HTTP/1.1 中不支持 HTTP 首部压缩,HTTP/1.1 中则可以使用 SPDY 压缩。而 HTTP/2 则使用了 HPACK 算法,专门为首部压缩而设计的。

服务端推送

服务端根据客户端的请求,提前返回多个响应,推送额外的资源给客户端。

请求优先级

把 HTTP 消息分解为很多独立的帧之后,每个流都可以带有一个 31 比特的优先值,有了这个优先值,客户端和服务器就可以在处理不同的流时采取不同的策略,以最优的方式发送流、消息和帧。

HTTP1.1 与 HTTP1.0

缓存处理

HTTP1.0 主要使用 header If-Modified-SinceExpires 来做缓存过期判断

HTTP1.1 则引入更多的缓存控制策略:

  • Entity tag: 实体标签
  • If-Unmodifed-Since: 比较资源最后的更新时间是否不一致
  • If-Match: 比较 ETag 标签是否一致
  • If-None-Match: 比较 ETag 标签是否不一致

断点续传

HTTP1.1 默认支持断点续传

长连接

HTTP1.1 默认支持长连接。Connection: keep-alive

参考链接