如果同时从同一服务器发出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在没有先等待响应的情况下,在同一连接上发送多个请求。我不确定这在哪里适合答案。
答案 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流水线操作的标记。
所以,可能是两个连接。