HTTP1 和 HTTP2 的区别
🌟 前言
“HTTP/2 是对 HTTP/1.x 协议的重大升级,主要目标是提升网页加载速度、减少延迟、提高安全性。它基于 Google 的 SPDY 协议发展而来。”
📊 分点对比:清晰易懂
特性 | HTTP/1.1 | HTTP/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 可以在一个连接中同时加载所有资源,并通过服务器推送预加载关键资源,使页面加载更快。