HTTP 管道
2024-10-24
外围技术
在单个 TCP 连接上:
-
不使用 HTTP 管道, 那么就必须等待上一次请求响应后, 才能发送下一次请求.
-
使用 HTTP 管道后, 就不需要等待上一次请求响应, 就可以直接发送下一次请求.
队头阻塞
虽然 HTTP 管道允许请求可以连续发送, 但是服务器必须按照接收到的请求顺序来返回响应.
就是说, 即使后面的请求处理速度更快, 响应也必须等待前面的请求完成后才能返回.
这种限制导致了所谓的 "队头阻塞" 问题, 即前一个请求如果处理缓慢, 会阻碍后续所有请求的响应.
队头阻塞不是队列头阻塞, 可以理解为当前请求, 只要当前请求的处理速度慢了, 那么后续的响应也会变慢.
HTTP 管道不是多路复用
HTTP 管道必须按照收到的请求顺序来返回响应, 但是多路复用不需要,
现代替代方案
由于上述局限性, HTTP 管道在实际应用中并未得到广泛推广. 相反, 现代 Web 通信更倾向于使用以下技术:
-
HTTP/2: 引入了多路复用技术, 允许在单一连接上同时处理多个请求和响应, 彻底解决了队头阻塞的问题, 且兼容性和性能表现更佳.
-
HTTP/3: 基于 QUIC 协议, 进一步提升了性能和安全性, 提供更快的连接建立和更好的丢包处理能力.