这样,当我们创建一个新的图像时,副本将不会生成。我们可以在需要的时候手动去触发,运行如下代码:
img.media.is_live = true img.save img.media.recreate_versions! :cover
这代码也是运行于前台,是一个阻塞操作,但至少可以尽可能的推迟到最后一刻。我们可以通过Resque在后台进一步的运行:
# lib/resque/image_queue.rb class ImageQueue @queue = :image_queue def self.perform(image_id) image = Image.find image_id img.media.is_live= true img.save img.media.recreate_versions! :cover end end
然后,列队:
Resque.enqueue(ImageQueue, img.id.to_s)
性能提升
图像是厚重的,往往会减慢网站。减少页面负担的一种方法是压缩这些图像。Carrierwave图像优化器可以帮助我们飞速的压缩图像。
将下面这段添加到Gemfile:
gem 'carrierwave-imageoptimizer'
然后编辑image_uploader:
# app/uploaders/image_uploader.rd #..... include CarrierWave::ImageOptimizer process :optimize process :quality => 100 #....
如此压缩不会有视觉丧失。
图像处理是一个巨大的垂直,我们几乎只触及表面。我们可以建立很多很酷的东西。如果您对这篇文章感兴趣,请在评论中分享您的想法。










