是否应同时连接到新的HTTP 1.1服务器的HTTP连接会创建一个连接还是多个连接?

时间:2014-11-13 18:22:47

标签: http

问题

如果同时从同一服务器发出2个HTTP请求,例如GET /image1.png HTTP/1.1& GET /image2.png HTTP/1.1 以前没有与服务器的连接。那么应该建立1个TCP连接还是2?


信息

Persistent connections supported by default in HTTP 1.1。 HTTP 1.0使用Connection: Keep-Alive

从阅读RFC看起来非常清楚,如果上述请求是一个接一个地进行的,那么第二个请求应该重用该连接。

HTTP Pipelining在没有先等待响应的情况下,在同一连接上发送多个请求。我不确定这在哪里适合答案。

1 个答案:

答案 0 :(得分:2)

如果从同一服务器同时向同一服务器发出2个HTTP请求,例如GET /image1.png

如果请求是由浏览器同时发出的(并且没有HTTP代理服务器),那么将与服务器建立两个连接(除非启用了http pipelining)。根据维基百科关于流水线的文章,

  

在所有主流浏览器中,只有基于Presto布局引擎的Opera具有默认启用的完全正常工作的实现。在所有其他浏览器中,HTTP流水线操作已禁用或未实现。

     

由于担心有关错误的代理和线头阻塞,Internet Explorer 8不会对请求进行管道传输。

     

Mozilla浏览器(如Mozilla Firefox,SeaMonkey和Camino)支持流水线操作,但默认情况下禁用。默认情况下禁用管道传输以避免服务器行为不当出现问题。启用管道传输时,Mozilla浏览器会使用一些启发式方法,尤其是为较旧的IIS服务器关闭管道传输。

     

Konqueror 2.0支持流水线操作,但默认情况下已禁用。

     

Google Chrome支持在稳定版本中将HTTP流水线化作为非默认选项(从版本18开始)。目前还没有支持流水线HTTPS。[11]自版本26起,已禁用在Chrome中启用HTTP流水线操作的标记。

所以,可能是两个连接。