Dir*_*oer 5 hash load-balancing cdn multi-instance-deployment azure-load-balancer
所以我使用一个非常简单的 CDN 服务。您指向您的网站,如果您通过其主机名调用它,他们会在第一次调用后为您缓存它。
我将其用于所有静态内容,例如 JavaScript 文件和图像。
这一切都很完美——而且我喜欢它的维护或设置成本非常低。
当推出新版本的 JavaScript 文件时,问题就出现了。如果文件发生更改,新的 JavaScript 文件会自动获取新的哈希值。
由于在多个实例上的转出并不是同时进行的,因此会出现问题。我尝试在此图中对其进行建模:
用言语来说:
我知道如何解决这个问题 - 即手动将文件上传到单独的存储并烘焙哈希值等。但这需要额外的代码并且有更多的“移动部件”,使维护更加复杂。
我更希望拥有像正常 CDN 行为一样无缝运行的东西。我想这是在多个实例上运行的网站的常见问题,但我找不到很多有关此问题的信息。
解决这个问题的常用方法是什么?
编辑
我认为另一个解决方案是以某种方式强制 CDN 转到 .js 文件与原始 html 文件相同的实例 - 但如何实现呢?
我最终通过仅在运行几分钟后引用 CDN 版本来修复此问题。
因此,如果运行时间少于 5 分钟,则表示:
/scripts/example.js?v=351
5分钟后指的是CDN版本:
https://cdn.example.com/scripts/example.js?v=351
5 分钟后,我们非常确定所有实例都在运行新版本,这样我们就不会意外地使用新哈希缓存旧版本。
缺点是,在非常繁忙的时刻,如果您重新部署,您将无法享受 CDN 的优势,但我还没有看到更好的替代方案。