MST

星途 面试题库

面试题:网络编程之HTTP/1.1与HTTP/2协议性能对比的基础差异

请简述HTTP/1.1与HTTP/2协议在连接管理、资源加载方面的主要性能差异,并说明这些差异如何影响网络应用的性能。
50.1万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

连接管理方面

  • 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:多路复用、二进制格式和优先级等特性显著提升了网络应用的性能。它能够更高效地利用网络带宽,加快资源加载速度,减少页面加载时间,提高用户满意度。尤其在移动网络环境下,优势更为明显,能降低流量消耗,提升应用响应速度。