Amazon CloudFront Cache失效策略可确保新鲜内容和成本效益

时间:2012-01-08 18:02:59

标签: asp.net-mvc-3 amazon-s3 amazon-cloudfront

我正试图围绕我应该使用哪种方法来强制CDN刷新用户个人资料照片在网站上,其中CloudFront是提供个人资料照片的CDN,而S3是底层文件存储。

用户更新个人资料照片后,我需要确保用户个人资料照片是最新的。我看到有三个选项可以更新个人资料照片,并确保网站用户在修改个人资料照片后立即获取最新图像。在确保新鲜内容和最大长期成本效益方面,这些方法是否优于其他方法?是否有更好的方法来确保新鲜的内容和最大的长期成本效益?

  1. 发出一个S3放置对象请求以使用其原始文件名保存文件,并发出一个Amazon CloudFront失效请求。 Amazon CloudFront每月最多允许1000次免费失效请求,这似乎有点偏低
  2. 发出一个S3delete对象请求以删除原始照片,然后一个S3放置对象请求以使用唯一的新照片文件名保存新照片。这将是每个文件更新的两个S3请求,并且不需要CloudFront CDN失效请求。然后,CloudFront会在更新后立即提供最新文件,并将图像URL自动设置为新文件名
  3. 发出一个S3放置对象请求以使用其原始文件名保存文件,然后客户端将版本代码附加到CDN URL(即/img/profilepic.jpg?x=timestamp)或该行的某些内容。我不确定此策略在使缓存的CloudFront对象失效方面有多么有效
  4. 由于

1 个答案:

答案 0 :(得分:5)

CloudFront失效可能需要一段时间才能启动,并且作为删除必须删除的内容(如版权侵权)的最后手段而被推荐。

最好的方法是版本化的URL。对于个人资料图片,我会使用唯一的ID(例如GUID)。每当用户上传新照片时,请替换该URL(如果您愿意,请删除旧照片)。

当您使用用户个人资料照片的新ID更新数据库时,CloudFront将提取新图像并立即进行更改。