Amazon Cloudfront 缓存问题

Posted

技术标签:

【中文标题】Amazon Cloudfront 缓存问题【英文标题】:Amazon Cloudfront cache issue 【发布时间】:2016-05-06 07:30:32 【问题描述】:

嘿,我已经开始使用 Cloudfront。在我的应用程序中,我在 s3 存储桶中有图像。 用户可以更新这些图像。当用户更新图像时,图像会在 s3bucket 中创建并用新图像替换旧图像。图像得到静止后,旧图像会显示给用户,因为 GET 操作我正在使用 Cloudfront,所以从云端缓存中检索旧图像。

那么有没有什么技术可以解决这个问题...

【问题讨论】:

【参考方案1】:

与几乎每个 CDN 的情况一样,您必须使缓存无效才能让 CDN 开始提供新版本。 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

我建议阅读“添加、删除或替换分发中的对象”部分下该链接的所有内容。实际上,我建议您阅读所有 CloudFront 文档,以便了解您使用的服务是如何工作的。

【讨论】:

【参考方案2】:

您可以通过将缓存 TTL 设置为 0 来解决您的问题。 转到“AWS 仪表板 | S3 | 您的存储桶 | 您的文件 | 编辑属性 | 元数据”。 将您的“Cache-Control”值设置为“max-age=0”。

更多信息在这里: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html

【讨论】:

但在这种情况下,云端将变得毫无用处。由于图像不会从云端缓存中获取,因此无论用户是否更新它,它将始终从 s3 存储桶中获取。.. 所以,你需要找到一个平衡点。 0 或任何其他小值将允许您在较大的 TTL 会提高您的性能时提供动态内容,但您可能会遇到问题中描述的问题。作为另一种解决方案,您可以在更新源对象时手动或以编程方式运行失效任务。 当然,这里有一个关于如何使用 python 进行操作的示例:boto3.readthedocs.org/en/latest/reference/services/…

以上是关于Amazon Cloudfront 缓存问题的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Cloudfront Cache-Control:no-cache 标头在 24 小时后无效

防止 Amazon Cloudfront 盗链

带有 Route 53 的 Amazon CloudFront

Amazon CloudFront 是不是通过 set-cookie 标头?

未应用 Amazon S3 图像缓存控制

Amazon CloudFront CNAME [关闭]