@
skyline75489 HTTP pipelining 要求:服务端需要将响应按顺序返回,在上一响应完全应答之前,不能发送下一响应。比如客户端按顺序请求了 /html 和 /css,服务端需要按顺序返回 /html 和 /css 响应。
考虑这样的场景,服务端并行处理客户端的请求,/css 响应先于 /html 生成,但 /css 响应需要等待 /html 响应生成后才能发送,这就产生了阻塞延迟——线头阻塞(head-of-line blocking)。
除此之外,HTTP 服务器对响应的缓存还会造成性能损失,而对客户端请求数量的未加限制还容易引发对服务器的攻击。
出于上述原因,部分 HTTP 服务器、代理并未实现 HTTP pipelining,或实现不正确(比如,并行化处理而不考虑应答顺序)。浏览器厂商由于担心线头阻塞的影响或是 pipelining 被代理破坏(所有请求都得重新发送),也大多采取保守的选择(默认关闭 HTTP pipelining 选项)。
更多信息可以参考这里:
http://chimera.labs.oreilly.com/books/1230000000545/ch11.html#HTTP_PIPELININGhttp://stackoverflow.com/questions/14810890/what-are-the-disadvantages-of-using-http-pipelining