了解SPDY延迟声明

时间:2013-03-18 23:41:26

标签: spdy

http://dev.chromium.org/spdy/spdy-whitepaper阅读SPDY白皮书,似乎支持它会改善我的HTTP延迟。但是,我对一些声明并不清楚。

1)“因为HTTP一次只能获取一个资源(HTTP流水线操作有帮助,但仍然只强制执行FIFO队列),服务器延迟500毫秒会阻止TCP通道重复用于其他请求。” - 这500ms的数字来自哪里?

2)“我们发现SPDY的延迟节省与数据包丢失率的增加成比例增加,在2%时加速达48%。” - 但是没有将所有请求放在单个TCP连接上意味着拥塞控制会减慢所有请求,而你有多个连接,1 TCP流会减慢但其他人不会?

3)“[使用流水线技术]流中任何处理的任何延迟(在线头或数据包丢失的长请求)都会延迟整个流。” - 这意味着数据包丢失不会使用SPDY延迟整个流。为什么不呢?

2 个答案:

答案 0 :(得分:2)

500ms参考只是一个例子,数字可以是50ms或5s,但这一点仍然相同:HTTP强制FIFO处理,这导致底层TCP连接的低效使用。正如本文所指出的那样,流水线技术在理论上可能有所帮助,但在实践中,由于许多中介在打开时会中断,因此不会使用流水线。因此,您遇到了最糟糕的情况:完整的RTT +服务器处理时间和FIFO排序。

Re,丢包。是的,你说得对。使用单个连接的缺点之一是,在丢包的情况下,整个连接的吞吐量减少一半,而不是飞行中N个连接之一的1/2。话虽如此,也有一些好处!例如,当您使单个连接饱和时,由于三重ACK +可能更宽的拥塞窗口开始,您可以获得更快的恢复速度。由于大多数HTTP传输相对较小(几十KB),因此它不是许多连接在退出慢启动阶段之前终止是不常见的!

重新,流水线。丢失的数据包会延迟流 - 即TCP。胜利是消除了线头阻塞,这使得浏览器能够进行更多更智能的优化,然后是我上面描述的一些胜利。

答案 1 :(得分:1)

@GroovyDotCom:这是HTTP2(SPDY)性能优势的一些实际证明:

http://www.httpvshttps.com/