1.二进制分帧
http1.x是文本格式传输,http2二进制格式传输,并且被切分未过个帧发送,帧可以根据头部流标识重新组装。
2. 单一长连接
同一个域名使用一个TCP连接,(http1.x 使用6-8个TCP连接,浏览器为减少消耗,进行的限制),无论请求多少个资源,能减少握手带来的延时,减少创建多个TCP连接
带来的网络开销,提高吞吐量
3. 多路复用
http1.x相当于单车道,同一个连接上的请求串行执行
http2相当于多车道,同一个连接上的请求可以并行执行。由于请求被二进制分帧,每个帧都有流编号。同一个请求和响应的帧必须是有序的,不同的请求的帧可以
互相穿插。然后按照流编号重组。
4.头部压缩
用HPACK压缩头部,使用首部表来进行首部字段存储,只有当首部表中的数据变更或为发送过时,才会发送http头部字段。
首部表分为静态表和动态表,静态表包含常用字段,动态表包含自定义字段等非常用字段,当新增或改变字段时,会增加或修改动态表中的数据。
5.服务端推送
客户端请求资源X,服务端判断客户端还需要别的资源,可以主动推送这些资源。客户端需要显式允许服务器启用推送功能。并且,客户端可以发送一个RST_STREAM
帧来中断推送流,推送受同源策略限制
例如,请求index.html页面时,服务器同时将index.js和index.css push给浏览器,当浏览器
解析html到请求index.css和index.js时,可以直接从缓存中读取
时间: 2024-10-06 00:03:17