【问题标题】:What are the disadvantage(s) of using HTTP pipelining?使用 HTTP 流水线有什么缺点?
【发布时间】:2013-01-26 11:32:27
【问题描述】:

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

  • iOS 上默认its disabled
  • 在演讲中将其描述为巨大的性能胜利。

您为什么不想使用它?

【问题讨论】:

    标签: http http-pipelining


    【解决方案1】:

    实现错误

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

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

    A server MUST send its responses to those requests in the same order that the requests were received.

    性能问题

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

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

    • 某些服务器和most proxies 不支持它。 (可能是出于安全/可靠性/或性能问题)
    • 某些服务器不正确地支持它,这可能会导致客户端出现错误。
    • 不一定是性能上的胜利。
    • 容易受到线头阻塞

    【讨论】:

    • 能否详细说明为什么代理不支持(假设代理连接的服务器支持)?
    • @HelinWang - 如果你想一想,代理的实现很难,因为它必须以正确的顺序发回响应。他们也容易受到线头阻塞的影响(见图)。 wiki 页面说“大多数 HTTP 代理不管道传出请求”。 en.wikipedia.org/wiki/…
    • 值得一提的是,HTTP/2 解决了行头阻塞问题。
    • @vtortola 这不完全正确,它将 HOL 阻塞转移到 tcp...负担转移了,但没有消失
    猜你喜欢
    • 2016-04-01
    • 2011-03-18
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2012-01-08
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多