WWDC 2012 session 706 - Networking Best Practices解释HTTP Pipelining。
为什么你不想使用它?
答案 0 :(得分:76)
要使流水线工作,响应必须按照请求的顺序返回。一个天真的服务器实现可能只是在计算后立即发送响应。如果并行发送多个请求,并且第一个请求需要更长的时间来处理(例如处理更大的图像),那么响应将会出现故障。
这是客户端的问题,因为HTTP是无状态协议,客户端无法将请求与响应进行匹配。它依赖于回复的顺序。
即使服务器正确支持流水线操作,也会出现性能问题,因为所有后续请求都必须等待第一个请求完成(行头阻塞)。
This article,在某些情况下讨论性能丢失以及可能遭受拒绝服务攻击。
This article也表明流水线技术不是一场巨大的胜利。
WWDC 2015 - Networking with NSURLSession很好地解释了线路阻塞问题。 (解决方案是切换到支持优先级的HTTP 2)
总而言之,HTTP流水线操作的问题是: