禁用S3缓存

10
我在Amazon S3中保存了静态文件,但一直遇到Amazon缓存这些文件的问题。当我更新/覆盖静态文件时,希望自动显示最新版本,而不是等待缓存过期。您有什么建议吗?
6个回答

5

1
bucketexplorer.com 现已不再提供服务。请参考 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationAddingHeadersInS3 了解如何禁用对象的缓存。 - rbelow
它不起作用。 - Franco

4
在putObject()或upload()的参数中添加以下内容:
CacheControl: "no-cache"

这是“缓存控制”,但它不起作用。 - Franco

3

S3无法做到立即提交,因为它被设计成最终一致性。


所有CDN都是这样吗? - Brett Sinn
不,即使是S3现在也能处理这个。 - chicks
@chicks可以更具体地说明吗? - Philip Enc
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html#ExpirationAddingHeadersInS3 - chicks

2

如果你总是想要最新的文件,那么你需要更改文件名。


Angular总是会生成一个包含index.html文件的dist文件夹。我认为你的建议不太实际,但还是谢谢。 - Philip Enc

1

我正在使用Javascript SDK,并通过将GetObject()ResponseCacheControl参数设置为"no-cache"来解决问题。


0

设置 Cache-Control: "no-cache" 并没有生效。我甚至检查了每次上传对象时是否存在元数据,但它仍然被缓存并显示旧的图像。

我认为现在唯一的解决方案是生成一个随机的 2 位长度字符串并将其附加到您上传的图像名称的末尾。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接