HTTP/1的缺陷
-
队头阻塞
- 1.1版本实现了管道化,允许一次发送一组请求
- 但是响应的返回必须按照顺序
- 如果第一个请求时间很长,后面的请求的响应都会被堵塞
- TCP慢启动导致原本就具有突发性和短时性的 HTTP 连接变的十分低效
-
消息首部无法压缩
- 例如有cookie,首部会很大
- 会占据请求的很大部分
HTTP/2的优化
-
二进制协议
- HTTP/1的解析是基于文本分割的
- 每一行的结尾会有分隔符(\r\n)
- 一次只能处理一个请求,完成前不能中断
- 无法预估一次解析需要预留多少内存(一行多长)
- HTTP/2的请求和响应由一个HEADERS帧和许多DATA帧构成
- 帧的大小固定
- 首部压缩
-
多路复用
- 客户端向某个域名的服务器请求页面的过程中,只会创建一条TCP连接,即使这页面可能包含上百个资源
- 虽然只有一条TCP连接,但是在逻辑上分成了很多stream
- TCP连接的复用避免了多次慢启动
-
服务端推送
- 当一个客户端请求资源X,而服务器知道它很可能也需要资源Z的情况下,服务器可以在客户端发送请求前,主动将资源Z推送给客户端
相关文章:
-
2021-06-11
-
2021-08-06
-
2022-01-05
-
2021-04-15
-
2023-02-27
-
2022-12-23
-
2022-01-21
猜你喜欢
-
2022-12-23
-
2022-12-23
-
2022-01-04
-
2021-06-18
相关资源
-
下载
2021-06-05
-
下载
2021-06-22
-
下载
2022-11-30