如果我经常覆盖S3上的文件,当我在浏览器中提供文件时,CloudFront会对它们进行缓存。我正在研究Invalidation,但是对于一个多功能网站来说,似乎有多少验证似乎不适用。
我能看到的唯一解决方案是覆盖文件,删除旧文件并更改新文件的名称(我只是将TIMESTAMP添加到结尾),以便CloudFront不会提取缓存版本
这是处理此类事情的最佳建议方式吗?
答案 0 :(得分:3)
以下是无效限制细节的链接:http://aws.amazon.com/cloudfront/faqs/#Is_there_a_limit_to_the_number_of_invalidation_requests
在任何给定的情况下,您只能处理3个无效请求 时间。如果超出此限制,将进一步发出无效请求 收到错误响应,直到其中一个先前的请求完成。
AWS建议:
建议您为其实现版本控制系统 您的文件和/或设置一个较短的有效期。
短暂的到期期限很简单,但有明显的缺点。要实现版本控制系统,您可以跟踪数据库中的文件版本,并将该版本作为查询字符串参数附加:
file.jpg?v=2
通过这种方式,您可以设置较长的到期时间,只有在您专门上传新文件并更新版本时,该文件才会失效。
如下面评论中所述,默认行为是CloudFront在构建缓存密钥时忽略查询字符串,因此请确保在默认缓存行为设置下启用“正向查询字符串”以使用此版本控制方法。