加载中...
QPACK 是 HTTP/3 使用的头部压缩算法,它继承 HPACK 的思路,但针对 QUIC 流的乱序交付特性做了重新设计,通过独立的编码器与解码器流协调动态表更新,避免了队头阻塞。

| 中文名 | HTTP/3 头部压缩 |
| 所属协议 | HTTP/3 |
| 底层传输 | QUIC |
| 前身 | HPACK |
| 特色 | 独立编解码流 |
QPACK是 HTTP/3 采用的头部字段压缩格式,它在 HPACK 的静态表、动态表和哈夫曼编码基础上,专门解决 QUIC 传输中数据包可能乱序到达带来的动态表同步难题,从而在保持高压缩率的同时不引入队头阻塞。
HTTP/3 运行在 QUIC 之上,不同请求分布在不同的流中且可能乱序抵达。而 HPACK 的动态表要求头部块严格按顺序处理,一旦某个块延迟就会阻塞后续所有块的解码。QPACK 为适配 QUIC 的乱序特性而生,是对 HPACK 的针对性改造。
QPACK 在所有 HTTP/3 连接中承担头部压缩职责,对于头部庞大的现代 Web 请求,它既保留了类似 HPACK 的高压缩收益,又契合 QUIC 的多流并发模型,是 HTTP/3 端到端低延迟体验的组成部分。
问:QPACK 相比 HPACK 主要改进在哪里?答:核心在于它把动态表的更新与头部块的传输解耦,用独立流同步动态表,使乱序到达的头部块不会互相阻塞,从而适配 QUIC。
问:QPACK 会牺牲压缩率吗?答:会有轻微取舍。为避免阻塞,编码器有时选择不引用尚未确认的动态表项而使用字面值,压缩率略降,但换来更稳定的解码性能。

| 中文名 | HTTP/3 头部压缩 |
| 所属协议 | HTTP/3 |
| 底层传输 | QUIC |
| 前身 | HPACK |
| 特色 | 独立编解码流 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧