感谢 Google 和 Stack Overflow,我想我理解了常规 HTTP 流水线和 HTTP 多路复用(例如,使用 SPDY)之间的区别,所以我制作了下图来展示基于三个常规 HTTP 请求的流水线和多路复用之间的区别。
我的两个问题是:
- 图像是否正确?
- 如果流水线没有线头阻塞问题,它是否会像 HTTP 多路复用一样快?还是我错过了额外的差异?
感谢 Google 和 Stack Overflow,我想我理解了常规 HTTP 流水线和 HTTP 多路复用(例如,使用 SPDY)之间的区别,所以我制作了下图来展示基于三个常规 HTTP 请求的流水线和多路复用之间的区别。
我的两个问题是:
这不是不正确的,但它忽略了一个重要方面。HTTP 要求您在任何其他请求可以继续之前交付整个响应。您在图中显示的内容是正确的,因为使用 SPDY,我们最终可以打破“线头”要求并在响应可用时提供响应。但是,我们也不必等待任何请求完全完成。
想象一下两个请求,大小都是几个 kb:每个请求都有多个数据包,调用它们[r1p1, r1p2]
并[r2p1, r2p2]
. HTTP 要求 pN 以准确的顺序到达。另一方面,SPDY 允许我们:[r2p1, r1p1, r1p2, r2p2]
.
还值得一提的是,使用 SPDY,我们可以使用请求优先级来提示服务器哪些请求应该优先,即使它稍后在线上到达(在六个其他很棒的特性中)。