文章目录
引言
- 最近面试总是被问到关于HTTP/2、HTTP/3的改进等等,之前学过,但是忘得有点多,这里回顾一下,做一下总结!
正文
HTTP/1.1与HTTP/1.0
1、长连接代替短链接
简介
- 使用长连接的方式改善了HTTP/1.0短链接造成的性能开销
- 长连接,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
具体使用
- 通过connection字段,Keep-Alive值实现
Connection:Keep-Alive
- 开启上述机制之后,就会保持连接
- 当客户端发送另外一个请求是,会使用同一个链接
2、管道传输
简介
- 支持管道传输,请求发送不受限制,不用等待第一个请求的响应回复即可发送第二个请求。、
- 但是服务器必须按照接受请求的顺序发送响应
特点
- 解决了请求的队头阻塞问题,但是没有解决响应的队头阻塞问题
缺点
1、首部未压缩
- 请求和响应的头部含有大量的冗余信息,未经压缩就发送,浪费资源延迟大。
- HTTP/1.0仅仅压缩了Body
2、队头阻塞
- 服务器是按照请求的顺序响应的,服务器响应慢,会出现队头阻塞问题
队头阻塞没有搞清楚!
3、被动响应
- 请求只能从客户端开始,服务器只能被动响应,无法主动推送。
一个网页的多个构成,可以打包多个消息一块发送吗?
基于请求,为什么不能多发几个信息?
4、无优先级控制
- 没有请求优先级控制
HTTP2.0和HTTP1.1
1、头部压缩
简介
- 如果发送多个请求,头都是一样的或者相似的,协议会帮助消除重复部分,减少冗余部分。
具体实现原理
- 客户端和服务端共同维护一个静态表和动态表
- 请求和响应头的信息,使用动态表和静态表中的所以索引号来发送,去除冗余消息
通过索引号代替头部信息,加快发送速度
静态表如下