53

感谢 Google 和 Stack Overflow,我想我理解了常规 HTTP 流水线和 HTTP 多路复用(例如,使用 SPDY)之间的区别,所以我制作了下图来展示基于三个常规 HTTP 请求的流水线和多路复用之间的区别。

在此处输入图像描述

我的两个问题是:

  1. 图像是否正确?
  2. 如果流水线没有线头阻塞问题,它是否会像 HTTP 多路复用一样快?还是我错过了额外的差异?
4

1 回答 1

50

这不是不正确的,但它忽略了一个重要方面。HTTP 要求您在任何其他请求可以继续之前交付整个响应。您在图中显示的内容是正确的,因为使用 SPDY,我们最终可以打破“线头”要求并在响应可用时提供响应。但是,我们也不必等待任何请求完全完成。

想象一下两个请求,大小都是几个 kb:每个请求都有多个数据包,调用它们[r1p1, r1p2][r2p1, r2p2]. HTTP 要求 pN 以准确的顺序到达。另一方面,SPDY 允许我们:[r2p1, r1p1, r1p2, r2p2].

还值得一提的是,使用 SPDY,我们可以使用请求优先级来提示服务器哪些请求应该优先,即使它稍后在线上到达(在六个其他很棒的特性中)。

于 2012-05-07T16:23:26.987 回答