为什么 Chrome 在不需要时不关闭未使用的 TCP 连接?

问题描述 投票:0回答:1

在 Chrome 中加载单个页面时,Chrome 有时会创建一两个额外的 TCP 连接。

这些连接可能是临时的,以防页面有其他资源需要从服务器请求。当没有其他资产可供请求时,这些 TCP 连接就坐在那里,而不是关闭。 Chrome 绝不会在这些连接上发送请求。

为什么当 Chrome 知道没有更多资源可以请求时,Chrome 不会关闭它们,而是依赖服务器超时?

我问的原因是因为特别是在嵌入式网络服务器上,这种行为浪费了宝贵的资源。

另外,我想了解 http 服务器的行为方式。听起来服务器应该发送“请求超时”408,但是多久之后呢?

一些补充说明:

当我说 Chrome 不会关闭额外的 TCP 连接时,我已将服务器上的超时设置为 10 秒。如果等待更长的时间,Chrome 最终可能会关闭它,但初始页面会加载 < 7ms, so there was plenty of time for Chrome to figure out that there are no additional requests.

我还没有找到明确的消息来源表明这些连接是临时的,只是有根据的猜测/推测,如下所示:为什么 Chrome 打开连接但不发送任何内容

但是,我可以看到,当加载确实需要请求其他资源的页面时,会使用那些“临时”TCP 连接。

google-chrome http tcp
1个回答
0
投票
为什么,当 Chrome 知道没有更多资源可以请求时 ...

Chrome 不知道这些连接不会被使用。您的页面上可能有一些脚本最终会向服务器发出请求。

另外,我想了解 http 服务器的行为方式。听起来服务器应该发送“请求超时”408,但是多久之后呢?

从服务器端,您可以简单地关闭连接。由于未完成任何请求,因此预计不会有响应,包括没有 408 响应。这是空闲连接的一般行为,即没有未完成响应的连接 - 客户端和服务器都可以随时关闭这些连接。

© www.soinside.com 2019 - 2024. All rights reserved.