标准答案
- HTTP/1.1 支持持久连接和管线化,但实际浏览器通常通过多个连接并发请求;同一连接上的响应顺序和队头阻塞仍会限制效率。
- HTTP/2 使用二进制分帧、流和多路复用,可在一条 TCP 连接中交错传输多个请求,并通过 HPACK 压缩头部。
- HTTP/2 的多个流仍共享同一条 TCP 连接。一个 TCP 包丢失时,底层重传可能拖慢其他流的交付。
- HTTP/3 使用基于 UDP 的 QUIC,在传输层提供加密、连接迁移和独立流的丢包恢复,减少跨流的传输层队头阻塞。
- 协议升级不等于所有接口立即变快,还要考虑 CDN、负载均衡、客户端网络、连接复用、服务端支持和实际资源加载方式。
题目解析
HTTP/2 解决的是应用层多路复用问题,HTTP/3 进一步把多路复用放到不受 TCP 全连接队头阻塞影响的 QUIC 流上。
服务端启用新协议后,应观察握手成功率、回退比例、连接错误和真实用户延迟,而不是只以理论吞吐判断收益。
常见误区
- 认为 HTTP/2 已经彻底消除了所有队头阻塞。
- 把 HTTP/3 简化成“HTTP 跑在 UDP 上”,忽略 QUIC 仍提供可靠传输、拥塞控制和加密。
- 以为协议版本越新就不需要缓存、压缩和连接池治理。