Почему Dragonfly снова и снова изменяет размер моих изображений?

Я загружаю свои изображения, и в первый раз он будет запускаться на них 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


person Dorian    schedule 15.01.2014    source источник
comment
Вы разобрались с этим?   -  person Gordon Isnor    schedule 08.02.2014
comment
Кажется, это связано с моим сервером memcache, но до сих пор не решено (это только замедляет работу страниц в dev, так что все в порядке).   -  person Dorian    schedule 10.02.2014
comment
На самом деле решено для части convert, но она по-прежнему загружает мои изображения с S3, даже если они были загружены ранее.   -  person Dorian    schedule 25.06.2014
comment
Жаль, что вы не опубликовали решение для части convert.   -  person Alexander    schedule 21.10.2014
comment
Alex Popov: Фактическое решение состоит в том, чтобы включить Rack Cache и осознавать, что каждый image.width, image.height и т. д. на самом деле вызовет команду convert. Поэтому, если вы хотите часто получать эту информацию, лучше хранить ее вместе с вашей моделью.   -  person Dorian    schedule 21.10.2014


Ответы (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.width, image.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
person Dorian    schedule 21.10.2014