【发布时间】:2013-01-26 11:32:27
【问题描述】:
WWDC 2012 session 706 - Networking Best Practices 解释了HTTP Pipelining。
- iOS 上默认its disabled
- 在演讲中将其描述为巨大的性能胜利。
您为什么不想使用它?
【问题讨论】:
标签: http http-pipelining
WWDC 2012 session 706 - Networking Best Practices 解释了HTTP Pipelining。
您为什么不想使用它?
【问题讨论】:
标签: http http-pipelining
要使流水线工作,响应必须按照请求的顺序返回。一个简单的服务器实现可能只是在计算出响应后立即发送响应。如果并行发送多个请求,而第一个请求的处理时间较长(例如处理较大的图像),则响应将无序。
这是客户端的问题,因为 HTTP 是无状态协议,客户端无法将请求与响应匹配。这取决于响应返回的顺序。
即使服务器确实支持流水线,也可能会出现性能问题,因为所有后续请求都必须等待第一个请求完成(线头阻塞)。
This article,谈到了在某些情况下的性能损失和潜在的拒绝服务攻击。
This article 还表明流水线并不是一个巨大的胜利。
WWDC 2015 - Networking with NSURLSession 很好地解释了线头阻塞。 (解决方案是切换到支持优先级的 HTTP 2)
总而言之,HTTP 流水线的问题是:
【讨论】: