Rails carrierwave очень медленная загрузка с анимированным gif даже при небольшом размере файла

#javascript #ruby-on-rails #ruby #carrierwave

#javascript #ruby-on-rails #ruby #carrierwave

Вопрос:

Я пытаюсь загрузить анимированный gifфайл размером всего 611 КБ, и для его завершения требуется от 30 до 40 секунд или дольше. Я уже настроил конфигурацию своего сервера client_max_body_size для приема загрузки файлов размером 10 МБ, и он уже работает нормально и не занимает слишком много времени, как проблема, о которой я сейчас говорю, с файлами jpg, jpeg и png в соответствии с проверенным. Я не уверен, что причина этого в конфигурации сервера или процессе генерации версий файла с помощью carrierwave, которые я вставил здесь. Я уже провел много исследований, но, похоже, я не могу найти ту же проблему, что и у меня. Кстати, я использую для этого загрузчик javascript. Кто-нибудь здесь сталкивался с той же проблемой с Rails carrierwave?

А также у меня есть это сообщение в моем firebug:

 ... POST data request size limit has been reached by Firebug. ...
 

Вот драгоценные камни, которые я использовал, и код carrierwave для моего загрузчика:

 gem 'carrierwave'
gem 'carrierwave-aws'
gem 'carrierwave-base64'
 

app/uploaders/photo_uploader.rb

 require 'securerandom'

class PhotoUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick
  storage :aws

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  process :auto_orient
  def auto_orient
    manipulate! do |img|
      img.auto_orient!
      img = yield(img) if block_given?
      img
    end
  end

  version :scaled_512 do
    process :resize_to_fit => [512, 512]
  end

  version :thumb_425, from_version: :scaled_512 do
    process :resize_to_fill => [425, 212]
  end

  version :thumb_256, from_version: :scaled_512 do
    process :resize_to_fill => [256, 256]
  end

  def remove!
    begin
      super
    rescue Fog::Storage::Rackspace::NotFound
    end
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def filename
    "#{secure_token}.#{file.extension}" if original_filename.present?
  end

  protected
  def secure_token
    var = :"@#{mounted_as}_secure_token"
    model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
  end

end
 

Комментарии:

1. Разве вы не можете просто отключить свою обработку и версии для тестирования, чтобы узнать, является ли это вашей проблемой?

2. Я уже пробовал комментировать код для обработки версии фотографии, и результат составляет 10,78 с для загрузчика без обработки версии и 49,30 с с обработкой. И это только на моем локальном хостинге, это занимает слишком много времени на сервере.