如何在Cloudfront中存储频繁更改的静态文件?

问题描述

我有一些用于广告系列的静态图片文件。问题是营销团队非常频繁地更改文件,并且需要花费一些时间才能在Cloudfront缓存中进行更新。
Cloudfront是存储此类文件的最佳位置吗?如果是,我该如何处理并确保提供更新的文件。 如果相反,cloudfront不是最佳解决方案,那我应该使用什么服务?
原始到Cloudfront的是s3服务器。

解决方法

这取决于这些文件的更新频率以及CloudFront的其他好处是否值得。

如果文件平均每小时更新一次或更长时间,并且您分散在世界各地成千上万的用户,那么CloudFront仍然是有益的,因为由于缓存,这些用户的加载时间将减少。要么使用对象版本控制(请参见here),要么设置一个较低的TTL,低于您乐于允许文件过时的时间(例如每小时更新一次) ,也许您可​​以将TTL设置为15-30分钟。

如果所有用户都位于相似的位置,则只需直接在该位置使用S3存储桶即可。您将节省CloudFront的成本,并且缓存无论如何都不适合您的用例。

您也可以使用缓存失效,但是这些会使您付出额外的费用,如果您不得不这样做太频繁,则应该降低TTL或移出CloudFront。

,

最近(从2020年8月开始)名为Why is CloudFront serving outdated content from Amazon S3?的AWS博客讨论了两种解决方案:

  1. 使S3对象无效:您可以使S3对象无效,以将其从CloudFront分布的缓存中删除。从缓存中删除对象后,下一个请求将直接从Amazon S3中检索对象。
  2. 使用对象版本控制:如果您经常更新内容,我们建议您使用对象版本控制清除CloudFront发行版的缓存。对于频繁的缓存刷新,使用对象版本控制的成本可能比使用失效的成本低。