google-chrome - 即使请求被缓存,Chrome 也会限制与域的同时连接
问题描述
背景:
似乎有一个共识,即当前版本的 Chrome 的域级别并发连接限制为 6-10(我很难找到有关确切限制的特定文档)
我的具体问题:
我正在开发一个向用户显示大量散点图并呈现为.png
图像的应用程序。当用户对特定图像发出 GET 请求时,服务器会动态生成图像并返回。有时这可能需要很长时间(>10 秒)。
我已经设置了适当的cache-control
标头,并且可以看到以前生成的图像正在从磁盘缓存中正确检索,并且从我的 Web 服务器端检查,没有向服务器发出 GET 请求:
但是,当用户导航回缓存图像页面时,我遇到了麻烦,而当前有 10 多个活动的 GET 请求正在等待图像。即使图像在磁盘缓存中,它们仍然会排队/停止:
我只是想知道是否有一个简单的方法来解决这个问题 - 我已经考虑了许多不同的解决方案,包括部分取消图像请求,以及创建一个侦听多个子域或端口(即image1.foo.com
,image2.foo.com
)的代理服务器,但它对我来说似乎很奇怪,Chrome 的设计方式是,即使从磁盘缓存的图像也会排在远程请求的图像后面。
只是想我会提到我在实现中也可能犯了一个错误,导致出现问题,所以请让我知道这听起来是否有其他时髦的事情发生。
编辑:我已经证实即使在通过 HTTP2 提供图像时也会发生这种行为。我最初怀疑并发连接限制,因为它仅适用于 HTTP 1.1(所有图像请求都应通过 HTTP2 中的同一个 TCP 连接并行发出),但似乎有某种内置的并发图像请求限制独立于未完成的 HTTP 请求的数量(考虑到磁盘缓存的先前行为,这是有道理的)
解决方案
推荐阅读
- c# - 避免为异步方法重新创建事件委托
- python - 在python中复制sumif公式
- google-chrome - 无法创建 chrome 开发者帐户来发布 chrome 扩展
- mongodb - docker-compose 文件不会从专用 env 文件中获取环境变量,导致数据库播种失败
- idoc - 在 BODS 中使用 IDoc 进行数据迁移
- css - 完整的 CSS 规则作为 SCSS 中的变量
- json - 在 Interface{} 中存储配置结构并将其转换回原始结构
- google-sheets - 如何为每列创建新记录?
- flutter - 颤振排序重音字符
- html - 用于显示文本的 HTML 元素,但不是来自直接用户输入