7

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

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

那是最好的方法吗?

4

3 回答 3

15

我对 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
于 2012-11-10T23:31:46.303 回答
8

要使 url 技巧在 Amazon CloudFront CDN 上起作用,只需记住在您的分配中启用查询字符串。转到行为选项卡并启用“转发查询字符串”。

于 2012-11-23T10:03:02.017 回答
5

您可以在carrierwave wiki上找到有关如何执行此操作的详细信息:

https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Create-random-and-unique-filenames-for-all-versioned-files

于 2012-11-10T06:50:29.173 回答