严格来说没有HTTP 1.2这个正式标准协议。HTTP 协议的主要版本发展如下HTTP/0.91991HTTP/1.01996HTTP/1.11997最广泛使用HTTP/22015HTTP/32022很多人说的“HTTP1.2”通常是以下几种情况口误实际上指HTTP/2某些厂商内部版本号并非 IETF 标准对 HTTP/1.1 的增强实现误称为 HTTP1.2HTTP/1.0 与 HTTP/1.1 的区别1. 长连接Keep-AliveHTTP/1.0每个请求都需要建立 TCP 连接建立TCP连接 ↓ 发送请求 ↓ 返回响应 ↓ 关闭连接访问一个页面index.html style.css main.js logo.png可能建立 4 次 TCP 连接。HTTP/1.1默认开启长连接建立TCP连接 ↓ 请求1 ↓ 响应1 ↓ 请求2 ↓ 响应2 ↓ 关闭连接优点减少 TCP 握手降低延迟提高性能2. Host 头支持HTTP/1.0GET /index.html HTTP/1.0服务器不知道访问哪个网站。HTTP/1.1GET /index.html HTTP/1.1 Host: www.example.com同一 IP 可以部署多个网站虚拟主机。3. 管道化PipeliningHTTP/1.1 新增请求1 请求2 请求3不用等待响应。但实际浏览器支持不好后来被 HTTP/2 多路复用取代。4. 缓存机制更完善HTTP/1.0If-Modified-Since ExpiresHTTP/1.1 新增Cache-Control ETag If-None-Match例如Cache-Control: max-age3600比 Expires 更灵活。5. 分块传输ChunkedHTTP/1.0必须知道内容长度Content-Length: 1024HTTP/1.1支持Transfer-Encoding: chunked边生成边发送4 Wiki 5 pedia 0适用于文件下载流式响应SSEHTTP/1.1 与 HTTP/2 的区别HTTP/1.1存在队头阻塞Head Of Line Blocking请求1 - 响应1 请求2 - 等待 请求3 - 等待HTTP/2多路复用TCP连接 ├── Stream1 ├── Stream2 ├── Stream3 └── Stream4多个请求同时进行。HTTP/2 新特性二进制帧HTTP/1.1纯文本HTTP/2二进制 Frame解析效率更高。Header 压缩使用HPACK减少重复 Header 传输。例如Cookie User-Agent Authorization不会每次完整发送。Server Push现已基本废弃服务器主动推送请求 index.html ↓ 服务器顺带推送 style.css main.js面试常问为什么 HTTP/2 比 HTTP/1.1 快答案多路复用Header 压缩二进制传输减少 TCP 连接数量降低网络延迟总结特性HTTP/1.0HTTP/1.1HTTP/2长连接❌✅ 默认开启✅Host头❌✅✅管道化❌✅✅(多路复用)Chunked❌✅✅Header压缩❌❌✅二进制传输❌❌✅多路复用❌❌✅