ruby-on-rails - 使用 Carrierwave 的 CDN(Cloudfront)缓存失效

标签 ruby-on-rails carrierwave amazon-cloudfront

我正在使用carrierwave来允许用户上传具有上传后裁剪功能的图像,问题是版本被创建并且CDN立即捕获它们,当用户裁剪时他们看不到更改,因为Cloudfront缓存必须无效并且需要相当长的时间才能自行刷新。

我认为将版本号放在文件名上可能是一种使缓存无效的好方法,如何使用 Carrierwave 实现这一点?

这是最好的方法吗?

最佳答案

我对 cloudflare 有同样的问题

这是我的hackish解决方案:将updated_at时间戳放在参数中。应该适用于所有 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

关于ruby-on-rails - 使用 Carrierwave 的 CDN(Cloudfront)缓存失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13204978/

相关文章:

ruby-on-rails-4 - 删除上传的图像 rails 4 carrierwave

html - 从 CDN (Amazon Cloudfront) 引用样式表时出错

javascript - 以 HTTPS 方式提供 Apostrope-CMS S3 Assets 和附件

ruby-on-rails - WebSocket 握手期间出错 : Unexpected response code: 503

javascript - rails : Can't load two Jquery scripts in my page

ruby-on-rails - 如何测试 ruby​​ Mixin 模块?

amazon-web-services - 如何部署新的 cloudfront s3 版本而不会出现短暂的不可用?

ruby-on-rails - Omniauth-facebook 登录不工作

javascript - 在 Rails 中操作上传的 svg 文件

arrays - 将数据库中现有的字符串字段类型转换为数组字段类型 | Rails + PostgreSQL