2013-10-26 44 views
1

当我加载显示的网页时,为什么我会为每个图像的HTTP请求打开一个新的TCP连接?为什么在页面加载期间没有重用单个TCP连接?缺少TCP连接重用

+0

这是关闭的话题。但是,想象一个电话与TCP连接相同。如果你需要给别人打电话(图片),你需要拨打新的电话。请查看[Help - On Topic Quetions](http://stackoverflow.com/help/on-topic) –

+0

以下http://stackoverflow.com/a/12795169/986760可能有助于清楚地看到那些谁令人困惑的管道衬里与多个TCP连接 – fayyazkl

+0

@ErikPhilips a从同一站点获取另一个图像不需要新的连接。 – EJP

回答

3

我认为浏览器通常打开多个连接,以便它可以并行加载内容。另一种可能是服务器在完成发送图像文件并关闭连接后强制浏览器创建新连接。

1

浏览器还集成了一种称为HTTP流水线的技术,其中现有的TCP连接用于多个HTTP请求,但问题是所有传入的HTTP响应应与发送请求的顺序相同。

HTTP管道:

enter image description here

欲了解更多信息,请访问page

1

虽然大部分的原因引用已经是真实的(我upvoted),即你可能需要通过不同得到不同的资源连接例如一个加载标志,其他加载页面数据等,管道衬里并不总是可能的,再加上它试图并行做事。

不过,多个TCP连接的头顶对HTTP的影响总体上比较慢。这就是为什么谷歌一直在努力加速它的和新的模型http 2.0将使用一个单一的http连接。

Details几天前发布在黑客新闻上,基准测试令人印象深刻,不过它还有其他几个因素,比如使用较少的字节数的协议。

SPDY是google自己发布的早期版本

+0

先生,您是否说每个标签都可能有多个TCP连接,因为标签中的每个网页都包含要下载的大量资源/内容? – Subbu

+0

是的,情况正是如此。即使是非常小的请求,也会使用两个连接,其中一个连接分别下载徽标。 – fayyazkl

+0

你能给我一个使用流水线的实例吗?网页的例子?? – Subbu