Skip to content

HTTP 演进与性能

HTTP 的语义(方法、状态码、首部)三十年几乎未变,但它在网络上的传输方式经历了三代跃迁:从 HTTP/1.1 的文本协议、串行连接,到 HTTP/2 的二进制分帧与多路复用,再到 HTTP/3 基于 QUIC 把传输层整个搬到 UDP 之上。每一代都在回答同一个问题——如何在一条(或一组)连接上更快、更并发地搬运越来越多的页面资源。本叶顺着这条性能演进主线,讲清每一代的瓶颈、解法与代价,最后落到前端最关心的一点:在 HTTP/2+ 时代,哪些老掉牙的优化该扔、又该怎么重新做。

概述

  • 语义不变、编码在变GET/200/Content-Type 跨三个版本含义完全一致,变的只是字节在网络上的排布——这是版本几乎无感切换的根因(HTTP 语义本身见「HTTP 协议基础」叶)。
  • 一条主线:消灭队头阻塞:HTTP/1.1 有应用层队头阻塞 → HTTP/2 多路复用消除它、却留下 TCP 层队头阻塞 → HTTP/3 用 QUIC 把队头阻塞降到单个流。看懂这条线,就看懂了整部演进史。
  • 驱动力是网页复杂度:从单文档到一页上百个资源,串行请求与反复建连的成本被不断放大,倒逼协议一代代进化。
  • 前端关切点:HTTP/2+ 下域名分片、雪碧图、文件合并这些老优化反而有害;要会用 DevTools 看协议版本、理解 HTTP/3 对移动端弱网的意义。

本叶地图

文档地址

幻灯片地址

HTTP 演进与性能

测试题

HTTP 演进与性能 测试题