我正在使用carrierwave允许用户上传具有上传后裁剪功能的图片,问题是版本是否已创建,CDN会立即抓住他们,当用户裁剪时他们看不到更改,因为Cloudfront缓存必须失效并花费相当长的时间自己刷新。
我认为将版本号放在文件名上可能是排序缓存无效的一种好方法,如何使用Carrierwave实现呢?
这是最好的方法吗?
答案 0 :(得分:14)
我对cloudflare有同样的问题
这是我的hackish解决方案:将updated_at时间戳放在params中。应该适用于所有CDN
class AssetUploader < CarrierWave::Uploader::Base
def url(options={})
super.split("?v=")[0]+"?v=#{model.updated_at.to_time.to_i}" rescue super
end
end
答案 1 :(得分:7)
要使网址技巧在Amazon CloudFront CDN上运行,请记住在您的发行版中启用查询字符串。转到行为选项卡并启用“转发查询字符串”。
答案 2 :(得分:5)
您可以在carrierwave wiki上找到有关如何操作的详细信息: