我使用carrierwave允許用戶上傳圖片並具有上傳後的裁剪能力,問題是版本被創建並且CDN立即捕獲它們,當用戶裁剪它們時請參閱更改,因爲Cloudfront緩存必須失效,並且需要相當長的時間才能自行刷新。使用Carrierwave的CDN(Cloudfront)緩存失效
我認爲在文件名上放置版本號可能是一種排序無效緩存的好方法,如何實現使用Carrierwave?
這是最好的方法嗎?
我使用carrierwave允許用戶上傳圖片並具有上傳後的裁剪能力,問題是版本被創建並且CDN立即捕獲它們,當用戶裁剪它們時請參閱更改,因爲Cloudfront緩存必須失效,並且需要相當長的時間才能自行刷新。使用Carrierwave的CDN(Cloudfront)緩存失效
我認爲在文件名上放置版本號可能是一種排序無效緩存的好方法,如何實現使用Carrierwave?
這是最好的方法嗎?
我有同樣的問題與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
「hackish」,但這不是一個乾淨的方式嗎? –
它的工作原理!但我不明白。這個「v」參數用於什麼?幕後發生了什麼?謝謝! –
它用來完美的工作!問題是我現在開始使用carrierwave-backgrounder,它不會再工作了。任何見解? –
你可以找到如何在carrierwave維基做到這一點的詳細信息:
工作,使亞馬遜CloudFront的CDN的URL招,你要記得,使查詢字符串在你的分發。轉到行爲選項卡並啓用「轉發查詢字符串」。
花了幾個小時弄清楚什麼是錯的,直到我看到你的答案。非常感謝! – Sbbs
如何進行裁剪?通過CarrierWave通過Rmagick? – deefour
剪裁工作沒有問題,它使用MiniMagick,我可以查看服務器上的裁剪圖像(不通過CDN) – Ryan
我問的是,你是否獨立於CarrierWave上傳過程進行裁剪? – deefour