53

WWDC 2012 session 706 - Networking Best Practices解释了HTTP Pipelining

  • 默认情况下,它在 iOS 上禁用
  • 在谈话中,它把它描述为一个巨大的性能胜利。

为什么您不想使用它?

流水线

4

1 回答 1

84

实现错误

为了使流水线工作,响应必须按照请求的顺序返回。一个简单的服务器实现可能只是在计算出响应后立即发送响应。如果并行发送多个请求,并且第一个请求需要更长的时间来处理(例如处理更大的图像),那么响应将是无序的。

这是客户端的问题,因为 HTTP 是无状态协议,客户端无法将请求与响应匹配。它取决于响应返回的顺序。

服务器必须以与接收请求相同的顺序发送对这些请求的响应。

性能问题

即使服务器确实支持流水线,性能问题也可能出现,因为所有后续请求都必须等待第一个请求完成(线头阻塞)。

线头阻塞

所以总而言之,HTTP流水线的问题是:

  • 一些服务器和大多数代理不支持它。(可能是出于安全/可靠性/或性能问题)
  • 一些服务器不正确地支持它,这可能导致客户端错误。
  • 这不一定是性能上的胜利。
  • 易受线头阻塞
于 2013-02-11T13:32:17.800 回答