HTTP/2 与 HTTP/3 的差别
HTTP/2 在一条 TCP 连接上引入多路复用与头部压缩,浏览器不再需要为并发开六条连接,资源加载效率明显提升;但底层仍是 TCP,一个丢包会阻塞该连接上的所有流(传输层队头阻塞)。HTTP/3 把传输层换成基于 UDP 的 QUIC:丢包只影响相关流,还支持连接迁移(切换网络不重建连接),弱网与移动场景收益更明显。升级后仍需复测,因为多路复用会把更多流压到同一条连接上,相互影响的方式变了。
基本信息
| HTTP/2 | 二进制分帧、多路复用、头部压缩(HPACK),运行在 TCP 之上 |
|---|---|
| HTTP/3 | 运行在 QUIC(基于 UDP)之上,支持连接迁移与独立流 |
| 部署前提 | HTTP/2 需 TLS 协商(ALPN);HTTP/3 需客户端与边缘设备支持 |
| 观测影响 | 多路复用降低连接数,单连接承载更多流,慢流会互相影响 |
典型使用场景
- 前端资源密集页面:合并域名与连接数,减少握手与队头阻塞
- 移动端与弱网:HTTP/3 在丢包与网络切换场景下表现更稳
- API 网关:gRPC 基于 HTTP/2 的多路复用承载高频小请求
- 长连接推送:复用同一连接承载大量流,减少连接维护成本
- 跨地域访问:减少握手的往返次数,缩短首字节时间
版本
| 版本 | 关键特性 | 注意 |
|---|---|---|
| HTTP/1.1 | 持久连接、管道化(较少使用) | 并发靠多连接 |
| HTTP/2 | 多路复用、头部压缩 | TCP 层队头阻塞仍在 |
| HTTP/3 | QUIC、UDP 传输、连接迁移 | 需要边缘与客户端支持 |
压测与验证要点
压测与验证要点
# 1. 确认协议协商生效
curl -I --http2 https://example.com/ # 观察响应里的 HTTP/2
# 2. 复测关键指标:首字节时间、资源加载完成时间、P99 延迟
# 3. 关注单连接多流下的相互影响:慢接口是否拖慢同连接的其他请求
# 4. 服务器侧并发流上限与超时配置要与流量特征匹配
# 注意:UDP 可能被中间设备限速或拦截,HTTP/3 需要回退到 HTTP/2 的能力使用要点
- 升级协议后要复测:多路复用下单连接承载更多流,慢流会互相影响,需观察 P99
- 保留回退能力:HTTP/3 依赖 UDP 可达性,边缘设备或网络拦截时需要能退回 HTTP/2
- 服务端并发流上限要按流量特征调整:上限过低会排队,过高会让单连接承担过多负载
- 头部压缩对重复头收益大:减少自定义头数量、保持头顺序稳定有助于压缩效率
- 压测工具与环境要支持新协议,否则测出来的是旧协议下的容量
升级协议后要复测:多路复用下单连接承载更多流,慢流会互相影响,需观察 P99,旧的按连接数估算容量的方法不再适用。
HTTP/3 走 UDP,部分企业网络、防火墙与中间设备会限速或直接拦截:上线必须保留协议回退机制,否则可能出现部分用户完全不可用的分区故障。