Рельсы Carrierwave + Оптимизация скорости тумана
-
20-12-2019 - |
Вопрос
Я в настоящее время использую CARACLEWAVE с туманом для хранения и загрузки изображений с помощью ведра S3, но изображения нагрузки намного медленнее, чем они должны.Эти изображения загружаются практически мгновенно, когда хранятся как часть приложения - но хранится с помощью Covanerwave и Fog, требуется несколько секунд.
Это проблема с моим настройкой S3 или несущей ватами / туманом?Мой конфигурация Corerwave является следующим:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => '***', # required
:aws_secret_access_key => '***', # required
}
config.cache_dir = "#{Rails.root}/tmp/uploads" # To let CarrierWave work on heroku
config.fog_directory = 'bucketname' # required NB: having '.' in the bucket name creates an untrusted certificate
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
.
У меня есть мой ведр S3, настроенный для США, и я расположен в Австралии, так что может представлять несколько проблем - но мое приложение Heroku также настроен на США, и он загружает одинаковые изображения, когда они быстрохранится как часть самого приложения.Возможно, AWS не лучшее решение?
Во всяком случае любые решения о том, как я могу улучшить скорость загрузки изображения было бы здорово.Это просто без необходимости медленнее, чем должно быть.
Решение
Это звучит так, как вы хотите использовать Cloudfront , Сервис CDN Amazon (сеть доставки контента), которая интегрируетсяс S3.Использование CDN будет воспроизводить глобально повторять содержимое, которое вы храните в CDN (для цены), что должно улучшить время загрузки.
После вы Настройка учетной записи CloudFrontЭто до S3 , добавьте строку, как следующее в вашу конфигурацию оператора:
config.asset_host = "http://1234567.cloudfront.net"
.
с URL, который вы получаете во время настройки CloudFront.
К сожалению, похоже, вам также может понадобиться установить config.fog_public = true
для Canarerwave, чтобы иметь возможность использовать CDN Amazon.