面试题库 词条目录
前端Wiki/词条/HTTP/2 特性

HTTP/2 特性

定义HTTP/1.1 之后的一次重大协议升级,用多路复用与头部压缩解决应用层队头堵塞

HTTP/2 的核心改进有四点:一是二进制分帧,把请求响应拆成帧传输;二是多路复用,一个 TCP 连接上可并行跑多个请求,彻底解决 HTTP/1.1 的应用层队头堵塞;三是 HPACK 头部压缩,客户端与服务端共同维护索引表,重复的头部只传索引;四是服务端推送,可以在请求 HTML 时主动推送 CSS 和 JS。

面试追问一般是 HTTP/2 还有什么问题:所有流共用一条 TCP 连接,一旦丢包整个连接阻塞,这就是 TCP 层队头堵塞,HTTP/3 用基于 UDP 的 QUIC 解决。另外服务端推送在实践中收益有限,主流站点更多依赖连接复用与缓存策略。

JavaScript
// HTTP/2 多路复用示意:一个连接上的多个流交错传输
const frames = [
  { stream: 1, type: 'HEADERS', data: 'GET /index.html 的前一部分' },
  { stream: 3, type: 'DATA',    data: 'GET /style.css 的前一部分' },
  { stream: 1, type: 'DATA',    data: 'GET /index.html 的剩余部分' },
  { stream: 3, type: 'DATA',    data: 'GET /style.css 的剩余部分' }
];
frames.forEach(f => console.log('流 ' + f.stream + ' ' + f.type + ': ' + f.data));
console.log('所有流共享同一条 TCP 连接,应用层不再有队头堵塞');
⚠ 常见误区
🔗 相关词条HTTP 状态码与缓存策略前端工程化与打包构建
← 返回来源章节HTTP 状态码与缓存策略