存储桶文件更改后,如何清除静态云存储网站上的缓存?

How can I clear the cache on a static Cloud Storage website after bucket file changes?

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

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

我已通过导航到相关 javascript 文件的云存储中的 "object details" 页面并访问提供的 "Link URL" 来确保存储桶代码已实际更新。我 grep 它以获取我的更改,我看到了它们。然后我访问我的网站,查看源代码,在新选项卡中打开链接的 js 文件,grep 查找我的更改,但没有看到它们。所以它们在存储桶中,但被缓存在某个地方。

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

这里是 the documentation 的摘录:

Note also that because objects can be cached at various places on the Internet there is no way to force a cached object to expire globally (unlike the way you can force your browser to refresh its cache). If you want to prevent serving cached versions of publicly readable objects, set "Cache-Control:no-cache, max-age=0" on the object.

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

一切都取决于您的用例!