省流总结
HTTP1.0和HTTP1.1
- HTTP1.0默认是
短连接
。每次与服务器交互,都需要新开一个TCP连接;
HTTP1.1默认是长连接
。只要客户端服务端没有断开TCP连接,就一直保持连接,可以发送多次HTTP请求。(目前浏览器中对于同一个域名,默认允许同时建立 6 个 TCP 持久连接) - HTTP1.1支持
断点续传
,只发送header信息(不带任何body信息) - HTTP1.0缓存处理:expires,HTTP1.1引入更丰富的缓存字段如:cache-control
HTTP1.1和HTTP2.0
- HTTP1.1请求头header以纯文本传输;HTTP2.0支持
头部压缩
- HTTP1.1是以
文本格式
传输数据,HTTP2.0改用二进制格式
传输数据 - HTTP1.1需要等上一个请求的响应数据回来后才能发送另一个请求;
HTTP2.0设计了Stream
概念,多个 Stream 复用同一个TCP连接,并发处理多个请求 - HTTP2.0支持
服务端推送
HTTP/2 通过头部压缩、二进制编码、多路复用、服务器推送等新特性大幅度提升了 HTTP/1.1 的性能,而美中不足的是 HTTP/2 协议是基于 TCP 实现的,于是存在的缺陷有三个。
- TCP的队头阻塞并没有彻底解决
- TCP以及TCP+TLS建立连接的延时
- 网络迁移需要重新连接
HTTP2.0和HTTP3.0
- HTTP3.0弃用TCP,基于UDP实现了
QUIC协议
,彻底解决了TCP层的队头堵塞 - 更快建立连接
- 通过连接ID,实现连接迁移;
...大约 16 分钟