Asp.net mvc 3 Amazon CloudFront缓存失效策略,以确保新内容和成本效益

Asp.net mvc 3 Amazon CloudFront缓存失效策略,以确保新内容和成本效益,asp.net-mvc-3,amazon-s3,amazon-cloudfront,Asp.net Mvc 3,Amazon S3,Amazon Cloudfront,我正试图弄清楚我应该使用什么方法强制CDN刷新网站上的用户配置文件照片,其中CloudFront是提供配置文件照片的CDN,S3是底层文件存储 我需要确保用户更新其个人资料照片后,其个人资料照片是最新的。我看到了三个选项,我可以做更新个人资料照片,并确保网站用户得到最新的图片,一旦个人资料照片被修改。在这些方法中,在确保新内容和最大长期成本效益方面,一种方法是否优于另一种方法?是否有更好的方法来确保新内容和最大的长期成本效益 发出一个S3PUT对象请求以原始文件名保存文件,并发出一个Amazon

我正试图弄清楚我应该使用什么方法强制CDN刷新网站上的用户配置文件照片,其中CloudFront是提供配置文件照片的CDN,S3是底层文件存储

我需要确保用户更新其个人资料照片后,其个人资料照片是最新的。我看到了三个选项,我可以做更新个人资料照片,并确保网站用户得到最新的图片,一旦个人资料照片被修改。在这些方法中,在确保新内容和最大长期成本效益方面,一种方法是否优于另一种方法?是否有更好的方法来确保新内容和最大的长期成本效益

  • 发出一个S3PUT对象请求以原始文件名保存文件,并发出一个Amazon CloudFront无效请求。Amazon CloudFront每月允许多达1000个免费失效请求,这似乎有点偏低
  • 发出一个S3delete object请求以删除原始照片,然后发出一个S3 put object请求以唯一的新照片文件名保存新照片。这将是每个文件更新两个S3请求,并且不需要CloudFront CDN失效请求。CloudFront将在最新文件更新后立即提供服务,前提是图像URL自动设置为新文件名
  • 发出一个S3PUT对象请求以原始文件名保存文件,然后客户端向CDN URL(即/img/profilepic.jpg?x=timestamp)或类似的内容附加一个版本代码。我不确定这个策略在使缓存的CloudFront对象无效方面有多有效

  • 谢谢

    CloudFront失效可能需要一段时间才能生效,建议作为最后手段删除必须删除的内容(如侵犯版权)

    最好的方法是对URL进行版本控制。对于配置文件图像,我将使用唯一的ID(例如GUID)。每当用户上传新照片时,请替换该URL(如果愿意,请删除旧照片)


    当您使用用户配置文件的新ID更新数据库时,photo CloudFront将提取新图像并立即进行更改。

    方法3可能不起作用,有人说CloudFront将删除查询字符串param,