首页 > 解决方案 > 即使请求被缓存,Chrome 也会限制与域的同时连接

问题描述

背景:

似乎有一个共识,即当前版本的 Chrome 的域级别并发连接限制为 6-10(我很难找到有关确切限制的特定文档)

我的具体问题:

我正在开发一个向用户显示大量散点图并呈现为.png图像的应用程序。当用户对特定图像发出 GET 请求时,服务器会动态生成图像并返回。有时这可能需要很长时间(>10 秒)。

我已经设置了适当的cache-control标头,并且可以看到以前生成的图像正在从磁盘缓存中正确检索,并且从我的 Web 服务器端检查,没有向服务器发出 GET 请求:

.png 的缓存 GET 请求

但是,当用户导航回缓存图像页面时,我遇到了麻烦,而当前有 10 多个活动的 GET 请求正在等待图像。即使图像在磁盘缓存中,它们仍然会排队/停止:

磁盘缓存图像停止

我只是想知道是否有一个简单的方法来解决这个问题 - 我已经考虑了许多不同的解决方案,包括部分取消图像请求,以及创建一个侦听多个子域或端口(即image1.foo.comimage2.foo.com)的代理服务器,但它对我来说似乎很奇怪,Chrome 的设计方式是,即使从磁盘缓存的图像也会排在远程请求的图像后面。

只是想我会提到我在实现中也可能犯了一个错误,导致出现问题,所以请让我知道这听起来是否有其他时髦的事情发生。

编辑:我已经证实即使在通过 HTTP2 提供图像时也会发生这种行为。我最初怀疑并发连接限制,因为它仅适用于 HTTP 1.1(所有图像请求都应通过 HTTP2 中的同一个 TCP 连接并行发出),但似乎有某种内置的并发图像请求限制独立于未完成的 HTTP 请求的数量(考虑到磁盘缓存的先前行为,这是有道理的)

标签: google-chromecachingweb

解决方案


推荐阅读