所以我使用了一个非常简单的 CDN 服务。您指向您的网站,如果您通过他们的主机名调用它,他们会在第一次调用后为您缓存它。
我将它用于我的所有静态内容,例如 JavaScript 文件和图像。
这一切都很完美 - 我喜欢它的维护或设置成本非常低。
推出新版本的 JavaScript 文件时出现问题。如果文件发生变化,新的 JavaScript 文件会自动获得一个新的哈希值。
因为在多个实例上推出并不是同时出现问题。我尝试在此图中对其进行建模:
用一句话来说:
- 请求以新版本命中服务器
- 请求带有新版本哈希的 Js 文件
- CDN 正确检测到文件未缓存
- CDN 从负载均衡器请求具有新哈希的原始文件
- 负载均衡器将 CDN 请求提供给随机服务器 - 意外地从旧版本的服务器提供服务
- CDN 使用新哈希缓存旧版本
- 每个人都从 CDN 获得旧版本
我知道有一些方法可以解决这个问题 - 即手动将文件上传到带有哈希值的单独存储等。但这需要额外的代码并且有更多的“移动部件”,这使得维护更加复杂。
我希望拥有与正常 CDN 行为一样无缝工作的东西。我想这是在多个实例上运行的网站的常见问题,但我找不到很多关于此的信息。
解决这个问题的常用方法是什么?
编辑
我认为另一种解决方案是以某种方式强制 CDN 转到与原始 html 文件相同的 .js 文件实例 - 但是如何?