1

我有一个通过 Google Cloud 提供服务的静态网站。这是通过将静态文件存储在可公开访问的存储桶中并将该存储桶用作 HTTPS 负载均衡器的后端来完成的。(未选择负载均衡器的 CDN 选项。)

该站点加载正常,但我的问题是,当我更新存储桶内容时,这些更改需要花费不可预测的时间才能反映在浏览器中。我正在明确刷新,并且在 Chrome 控制台打开时也在尝试,在“网络”选项卡中选择了“禁用缓存”。

我已通过导航到 Cloud Storage 中相关 javascript 文件的“对象详细信息”页面并访问提供的“链接 URL”来确保存储桶代码实际上已更新。我为我的更改而grep它,我看到了它们。然后我访问我的网站,查看源代码,在新选项卡中打开链接的 js 文件,用 grep 查找我的更改,但看不到它们。所以它们在存储桶中,但被缓存在某个地方。

我不确定我遇到的缓存是发生在浏览器中还是发生在 Google Cloud 的某个层中。但是我怎样才能做到当我更改存储桶内容时,我可以立即在浏览器中看到这些更改?如何确保在每次存储桶更新后清除缓存,无论它发生在哪里?

4

1 回答 1

6

这里是文档的摘录:

另请注意,由于对象可以缓存在 Internet 上的各个位置,因此无法强制缓存对象全局过期(与强制浏览器刷新其缓存的方式不同)。如果您想阻止提供公开可读对象的缓存版本,请在对象上设置“Cache-Control:no-cache, max-age=0”。

因此,如果您不想在更新存储桶时出现任何延迟,我建议您将文件的缓存 max-age 设置为 0。然而,这是低服务延迟/低成本(更少的存储读取,更少的出口支付)和低更新延迟之间的权衡。

一切都取决于您的用例!

于 2020-05-05T11:40:32.403 回答