在本机移动应用程序中是否阻止HTTP 1.1管道传输?

时间:2009-09-17 02:34:29

标签: iphone android http java-me mobile

多年来,我一直面临着HTTP 1.1流水线操作的问题。继续要求服务器发送HTTP标头:

Connection: close

我想重新审视这个决定。您的原生移动应用是否使用HTTP流水线技术? 我遇到的HTTP流水线的一些问题:

  • 服务器未释放TCP连接
  • 我的客户端正在接收来自一个HTTP连接的多个回复

4 个答案:

答案 0 :(得分:2)

这正是持久连接和流水线操作的用途:保持TCP连接打开,直到超时到期(或浏览器关闭),并在同一管道上发送多个请求。

如果您的服务器为大量客户端服务(您可能会耗尽工作人员,RAM或甚至空闲端口,从而增加新请求的响应时间),您可能需要考虑删除持久连接。

如果您想进一步阅读,请指向persistent connection behaviour

答案 1 :(得分:0)

客户端/服务器与HTTP / 1.1兼容的要求之一是支持流水线操作。所以我不知道如何使用它会是一个问题......我宁愿认为它会受到鼓励。使用流水线技术可以减少创建新资源,网络带宽等的需求。

所有现代网络服务器都支持流水线操作和任何相当完整的客户端库,所以我不确定问题是什么......如果您询问具体错误我们可以帮助您解决这些问题。

答案 2 :(得分:0)

HTTP“管道传输”不仅意味着在连续的请求/响应之间保持TCP连接打开。它描述了用户代理行为,即使不等待对最后一个请求的挂起响应,它也会发送下一个HTTP请求。

根据我的经验,几乎所有HTTP服务器都支持持久连接。另外使用流水线技术不太稳定。 Firefox实现了这个功能,但默认情况下会激活它。

答案 3 :(得分:0)

您正在混淆HTTP流水线和HTTP持久连接。

持久连接是指为了将来的请求保持TCP连接,但仍然以串行方式发送它们:http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html

Pipelining是HTTP 1.1中很少使用的功能,您只需在同一连接上触发多个请求,而无需等待响应。它实际上是HTTP规范所要求的,但很少被客户端使用(例如,Android的HTTP库并不是这样)。但是,大多数服务器似乎都支持它。它在同一RFC的8.1.2.2节中描述。​​