【问题标题】:Why is Dragonfly resizing my images over and over again?为什么 Dragonfly 一遍又一遍地调整我的图像大小?
【发布时间】:2014-01-15 19:19:22
【问题描述】:

我加载我的图像,第一次它会在它们上运行convert,所以它有点慢。 但我希望它再也不会在它们身上运行convert,但 DragonFly 一遍又一遍地运行(在开发模式下)。

2014-01-15 14:10:45.587 [fyi] Started GET "/media/W1siZiIsIjIwMTMvMTEvMTEvMTkvNTAvMDAvNTg3L2JsaW5kYmFyYmVyX2ZhY2lhbGNsZWFuc2VyLmpwZyJdLFsicCIsInRodW1iIiwiOTIweDkyMD4iXSxbInAiLCJlbmNvZGUiLCJqcGciLCItcXVhbGl0eSA0MCJdXQ/blindbarber-facialcleanser.jpg" for 127.0.0.1 at 2014-01-15 14:10:45 -0500 (pid:73447)
2014-01-15 14:10:47.149 [meh] DRAGONFLY: shell command: 'convert' '/var/folders/42/z4r6cjj10vb5c6zvtwb0m9000000gn/T/dragonfly20140115-73447-1ti4jze' '-resize' '920x920>' '/var/folders/42/z4r6cjj10vb5c6zvtwb0m9000000gn/T/dragonfly20140115-73447-fvdfam.jpg' (pid:73447)
2014-01-15 14:10:47.700 [meh] DRAGONFLY: shell command: 'convert' '/var/folders/42/z4r6cjj10vb5c6zvtwb0m9000000gn/T/dragonfly20140115-73447-fvdfam.jpg' '-quality' '40' '/var/folders/42/z4r6cjj10vb5c6zvtwb0m9000000gn/T/dragonfly20140115-73447-e10r7h.jpg' (pid:73447)
2014-01-15 14:10:47.804 [fyi] DRAGONFLY: GET /media/W1siZiIsIjIwMTMvMTEvMTEvMTkvNTAvMDAvNTg3L2JsaW5kYmFyYmVyX2ZhY2lhbGNsZWFuc2VyLmpwZyJdLFsicCIsInRodW1iIiwiOTIweDkyMD4iXSxbInAiLCJlbmNvZGUiLCJqcGciLCItcXVhbGl0eSA0MCJdXQ/blindbarber-facialcleanser.jpg 200 (pid:73447)
2014-01-15 14:10:47.807 [meh] Cache write: d857888f4b9a786a815372039d952e203c056795 (pid:73447)
2014-01-15 14:10:47.825 [meh] Cache read: d857888f4b9a786a815372039d952e203c056795 (pid:73447)
2014-01-15 14:10:47.826 [meh] Cache read: http://localhost:3000/media/W1siZiIsIjIwMTMvMTEvMTEvMTkvNTAvMDAvNTg3L2JsaW5kYmFyYmVyX2ZhY2lhbGNsZWFuc2VyLmpwZyJdLFsicCIsInRodW1iIiwiOTIweDkyMD4iXSxbInAiLCJlbmNvZGUiLCJqcGciLCItcXVhbGl0eSA0MCJdXQ/blindbarber-facialcleanser.jpg? (pid:73447)
2014-01-15 14:10:47.827 [meh] Cache write: http://localhost:3000/media/W1siZiIsIjIwMTMvMTEvMTEvMTkvNTAvMDAvNTg3L2JsaW5kYmFyYmVyX2ZhY2lhbGNsZWFuc2VyLmpwZyJdLFsicCIsInRodW1iIiwiOTIweDkyMD4iXSxbInAiLCJlbmNvZGUiLCJqcGciLCItcXVhbGl0eSA0MCJdXQ/blindbarber-facialcleanser.jpg? (pid:73447)

但是对于每个请求,它都会再次转换图像,知道为什么吗?

PS:我的dragonfly.rb

【问题讨论】:

  • 你解决了吗?
  • 这似乎与我的 memcache 服务器有关,但仍未解决(它只会使页面在 dev 中变慢,所以没关系)。
  • 实际上解决了convert 部分,但它仍然从 S3 获取我的图像,即使它之前已获取。
  • 可惜你没有为convert 部分发布解决方案。
  • Alex Popov:实际的解决方案是启用 Rack Cache 并注意每个image.widthimage.height 等...实际上都会调用convert 命令。因此,如果您想经常获取此信息,最好将其存储在您的模型中。

标签: ruby-on-rails ruby amazon-s3 dragonfly-gem


【解决方案1】:

实际的解决方案是启用Rack Cache(在config/environments/development.rb):

  config.action_dispatch.rack_cache = {
    metastore: 'file:tmp/cache/rack/meta',
    entitystore: 'file:tmp/cache/rack/body'
  }

并且要意识到每个image.widthimage.height 等...实际上都会调用convert 命令。因此,如果您想经常获取此信息,最好将其存储在您的模型中:

  create_table "images", force: true do |t|
    # ...
    t.string   "image_uid"
    t.string   "image_name"
    t.integer  "image_height"
    t.integer  "image_width"
  end

在你的模型中:

  before_save :update_image_fields
  def update_image_fields
    if image
      self.image_width = image.width
      self.image_height = image.height
    else
      self.image_width = self.image_height = 0
    end

    true
  end

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2019-07-06
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多