Skip to content

HTTP1 和 HTTP2 的区别

🌟 前言

“HTTP/2 是对 HTTP/1.x 协议的重大升级,主要目标是提升网页加载速度、减少延迟、提高安全性。它基于 Google 的 SPDY 协议发展而来。”

📊 分点对比:清晰易懂

特性HTTP/1.1HTTP/2
传输格式明文(文本)二进制
多路复用不支持,需多个连接支持,单连接并发请求
头部压缩无压缩使用 HPACK 压缩
服务器推送不支持支持 Server Push
请求优先级不支持支持设置优先级
必须加密推荐使用 TLS(通常加密)

🔍 深入讲解每个关键点

1. 二进制分帧层(Binary Framing Layer)

  • HTTP/1.1 是基于文本解析的,效率低。
  • HTTP/2 将所有通信数据划分为更小的帧(frame),并封装成流(stream),实现高效的数据交换。

2. 多路复用(Multiplexing)

  • HTTP/1.1 每个请求/响应需要单独的 TCP 连接或阻塞式串行传输。
  • HTTP/2 可以在一个连接中发送多个请求和响应,避免“队头阻塞”,显著降低延迟。

3. 头部压缩(HPACK)

  • HTTP/1.1 每次请求都重复发送大量相同的头部信息(如 Cookie、User-Agent)。
  • HTTP/2 使用 HPACK 算法压缩头部,减少冗余数据传输。

4. 服务器推送(Server Push)

  • HTTP/2 允许服务器主动将资源推送给客户端,提前缓存,加快页面渲染速度。

5. 请求优先级(Stream Prioritization)

  • 客户端可以指定哪些请求更重要,服务器据此调整响应顺序,优化用户体验

💡 结合实际场景举例说明优势

比如打开一个包含多个图片、CSS、JS 文件的网页:

  • HTTP/1.1 需要建立多个连接或排队请求,容易造成延迟;
  • HTTP/2 可以在一个连接中同时加载所有资源,并通过服务器推送预加载关键资源,使页面加载更快。