HTTP 2.0

HTTP/1.x缺陷

  1. 客户端需要使用多个连接才能实现并发和缩短延迟.

  2. 不会压缩请求和响应首部, 从而导致不必要的网络流量.

  3. 不会有效的资源优先级, 导致底层TCP连接的利用率低下.

二进制分帧层

在通信过程中, 只会有一个TCP连接存在, 承载了任意数量的全双工数据流. 一个数据流都一个唯一标识符和可选的优先级. HTTP/2.x将一个请求或者回应分成了两个帧, HEADERS帧和DATA帧, 这组成了一个完整的消息. 帧是最小的通信单位, 来自不同数据流的帧可以交错发送, 然后再根据每个帧头的数据流标识符重新组装.

服务端推送

在HTTP/2.0中, 客户端请求一个资源, 服务端会把相关的资源也一起发给客户端. 这样客户端就不需要再次发起请求了. 例如客户端请求page.html页面, 服务端就会把script.js和style.css等与之相关的资源也一起发回来.

首部压缩

HTTP/2.0要求客户端和服务端维护首部字段表, 只需要渐进式更新表中内容, 免去了每次都要发送重复信息. 同时HTTP/2.0通过霍夫曼编码对首部字段进行了压缩.