面试题答案
一键面试连接管理方面
- HTTP/1.1:
- 持久连接:引入了持久连接机制(Connection: keep - alive),避免了每次请求 - 响应后都关闭TCP连接带来的额外开销,但多个请求仍需按顺序排队处理,即队头阻塞(Head - of - line blocking)问题。例如,在请求一个包含多个资源的网页时,如果一个请求因为网络等原因延迟,后续请求即使准备好也无法立即传输。
- 连接数量限制:浏览器通常限制与同一服务器的持久连接数量,一般为6 - 8个。这限制了并发请求数,在需要大量资源加载时,可能会影响加载速度。
- HTTP/2:
- 多路复用:彻底解决了队头阻塞问题。它允许在一个TCP连接上同时存在多个请求和响应流,每个流都有唯一标识符,可以独立传输和处理。例如,浏览器可以同时发起对CSS、JavaScript、图片等资源的请求,服务器也能按任意顺序将响应数据交错发回,提高了资源传输效率。
- 单个连接:使用单个TCP连接来传输所有资源,减少了TCP连接建立和关闭的开销,以及连接数量限制对并发请求的影响。
资源加载方面
- HTTP/1.1:
- 文本格式:报文采用文本格式,虽然可读性强,但由于头部信息冗长,每次请求都要重复传输相同的头部字段,增加了传输体积。例如,Cookie等字段会在每个请求中重复发送,浪费带宽。
- 无优先级:对资源加载没有优先级概念,所有请求平等对待。这可能导致重要资源(如关键CSS样式表,它影响页面渲染)不能优先加载,影响页面呈现速度。
- HTTP/2:
- 二进制格式:采用二进制分帧层,将报文分解为更小的帧进行传输,提高了传输效率。并且头部信息使用HPACK算法压缩,大大减少了头部体积,降低了带宽消耗。例如,相同的头部信息在HTTP/2中传输体积会小很多。
- 优先级:支持为每个请求设置优先级,服务器可以根据优先级优先处理重要资源的请求,使得页面关键资源能够更快加载,提升用户体验。比如,先加载关键CSS使页面尽快呈现样式,再加载其他非关键资源。
对网络应用性能的影响
- HTTP/1.1:队头阻塞、连接数量限制和头部冗余等问题,在加载复杂网页时会导致资源加载延迟,整体性能较低。特别是在网络不稳定或资源较多的情况下,用户可能需要等待较长时间才能看到完整的页面。
- HTTP/2:多路复用、二进制格式和优先级等特性显著提升了网络应用的性能。它能够更高效地利用网络带宽,加快资源加载速度,减少页面加载时间,提高用户满意度。尤其在移动网络环境下,优势更为明显,能降低流量消耗,提升应用响应速度。