7

私は Carrierwave を使用して、ユーザーがアップロード後にトリミングする機能を備えた画像をアップロードできるようにしています。問題は、バージョンが作成され、CDN がそれらを即座にキャッチすることです。ユーザーがトリミングすると、Cloudfront キャッシュを無効にする必要があり、変更が表示されません。自分でリフレッシュするにはかなりの時間がかかります。

ファイル名にバージョン番号を付けることは、キャッシュを無効にする良い方法かもしれないと思いました.Carrierwaveを使用してそれを達成するにはどうすればよいですか?

そして、それは最善のアプローチですか?

4

3 に答える 3

15

Cloudflareでも同じ問題がありました

ここで私のハックな解決策: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
于 2012-11-10T23:31:46.303 に答える
5

それを行う方法の詳細については、carrierwavewikiを参照してください。

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

于 2012-11-10T06:50:29.173 に答える