
1) 【一句话结论】HTTP/2的多路复用通过单TCP连接并行传输多个请求/响应流,消除了HTTP1.1因连接数限制导致的阻塞,显著提升资源加载效率,尤其适用于资源密集型前端页面。
2) 【原理/概念讲解】老师口吻解释:HTTP/2将请求/响应拆分为二进制帧(如HEADERS帧、DATA帧),每个流(Stream)有唯一ID,所有帧按流ID和顺序号组装。类比:把一个TCP连接想象成“大管道”,管道里有很多“小管道”(流),每个小管道可同时传输数据,不会因某个小管道的请求阻塞影响其他,就像多车道公路车辆并行行驶,不会因一辆车堵住而影响其他车。
3) 【对比与适用场景】
| 特性 | HTTP1.1 (单连接) | HTTP2 (多路复用) |
|---|---|---|
| 请求并发方式 | 多连接并行(受浏览器限制,如6个) | 单连接多流并行 |
| 阻塞影响 | 一个请求阻塞所有其他请求 | 各流独立,互不阻塞 |
| 首屏加载 | 资源多时加载慢(需多个连接) | 单连接传输所有资源,首屏快 |
| 使用场景 | 资源少、简单页面 | 资源密集型(如复杂小程序、网页) |
| 注意点 | 需保持连接复用(Keep-Alive) | 需确保服务器支持,客户端启用 |
4) 【示例】
假设一个复杂小程序页面,包含3个CSS文件、2个JS文件、5张图片。原本用HTTP1.1,浏览器需开6个连接,每个连接传输1个资源,总请求数=10,首屏加载慢。启用HTTP2后,所有资源通过一个连接传输,每个资源对应一个流(如流1传输main.css,流2传输app.js,流3传输logo.png),服务器按顺序发送DATA帧,客户端按流ID重组,并行加载,首屏加载时间从3秒降至1.5秒左右。
伪代码(请求示例):
5) 【面试口播版答案】(约80秒)
“面试官您好,HTTP/2的多路复用核心是通过单TCP连接并行传输多个请求/响应流,避免HTTP1.1因连接数限制导致的阻塞。原理上,HTTP/2将数据拆分为二进制帧,每个流有独立ID,所有帧按流ID和顺序号组装,就像一条大管道里有多个小管道并行传输数据,不会因某个小管道的请求阻塞影响其他。在前端优化中,主要应用是减少请求次数(所有资源在一个连接上传输),提升首屏加载速度。比如一个复杂小程序页面,原本需要10个请求(3个CSS、2个JS、5张图片),启用HTTP2后,所有资源通过一个连接传输,每个资源对应一个流,并行加载,首屏加载时间从3秒降到1.5秒左右。具体来说,页面资源列表:第一个流传输main.css,第二个流传输app.js,第三个流传输logo.png,服务器按顺序发送帧,客户端按流ID重组,这样所有资源同时加载,避免了HTTP1.1中多个连接排队的问题。”
6) 【追问清单】
7) 【常见坑/雷区】