Google Cloud Storage:使新文件上传的缓存无效

问题描述

我有一个标记为公开的 Google Cloud Storage (GCS) 存储分区。我使用 v4 签名 URL 将图像上传到这个公共存储桶。我可以通过 HTTP 标头看到 GCS 缓存图像长达 1 小时。但是,当我上传相同图像的较新版本(具有相同的文件名)时,GCS 不会使缓存无效并且仍然提供这些图像的旧版本。当这些图像的较新版本上传到 GCS 时,如何确保缓存失效?必须使用 v4 签名网址。

解决方法

据我了解,GCS 不会缓存您的图像,而是设置默认缓存策略,稍后由本地浏览器或互联网缓存使用。

公共 GCS 存储桶的默认策略(称为“内置缓存”)确实是 3600 秒 (reference)。

因此,如果政策设置为 1 小时,如果本地浏览器(或其他具有缓存的功能)将获取此类文件,它将在该时间内提供服务(请查看 this 文章)。

如果我理解正确,要求是在新版本上传到 GCS 时强制缓存上传数据。不幸的是,这似乎是不可能的,因为缓存不在 GCS 中,而是在用户的本地浏览器或互联网中的某个地方,不受 GCS 控制。

在这一点上,我认为您必须决定是否要将对象设置为根本不缓存,然后将立即下载新的对象版本并带来所有相关后果(应用程序性能、GCS 使用价格等)或接受对于某些应用程序将提供旧版本的内容。

要为 GCS 设置 cache-control,请参阅此 link。也检查 performance consideration