在 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 连接。
Chrome 不知道这些连接不会被使用。您的页面上可能有一些脚本最终会向服务器发出请求。
另外,我想了解 http 服务器的行为方式。听起来服务器应该发送“请求超时”408,但是多久之后呢?
从服务器端,您可以简单地关闭连接。由于未完成任何请求,因此预计不会有响应,包括没有 408 响应。这是空闲连接的一般行为,即没有未完成响应的连接 - 客户端和服务器都可以随时关闭这些连接。