Пересылка на S3 по-прежнему возвращает загрузку на локальный хост
Я следовал этому уроку при refile / refile и пытался использовать `refile-s3 для загрузки моих фотографий на S3. Тем не менее, он все еще загружается на мой локальный хост.. Интересно, почему?
Код в Github: https://github.com/chrisyeung1121/refile-example
Я что-то пропустил?
1 ответ
Я запустил пример приложения и все сделано правильно, файл загружен на S3. Вы можете видеть это при просмотре вашего s3 ведра должно быть /store
папка с файлом внутри вот так выглядит: 8d005532259e4abc0.....
Это будет соответствовать идентификатору, сохраненному в вашей базе данных. В вашем случае идентификатор хранится как profile_image_id в вашей модели пользователя.
Это может сбивать с толку, что результат attachment_url
возвращается <img src="/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">
заставляя это казаться, что это все еще загружено к localhost.
Происходит то, что refile загружает файл с amazon s3, изменяет его на 300x300 на лету и отправляет в браузер. Однако это не следует делать каждый раз, когда страница загружается, так как это потребует много вычислительной мощности. Именно здесь требуется CDN, а refile предназначен для его использования. Таким образом, обработанные изображения кэшируются, и все происходит намного быстрее.
в refile.rb
файл конфигурации:
Refile.cdn_host = "https://your-dist-url.cloudfront.net"
или в моем случае я ограничил это производством:
if Rails.env.production?
Refile.cdn_host = "https://your-dist-url.cloudfront.net"
end
обратите внимание, что.cdn_host должен быть.host, если используется версия ниже 0.6.0
Теперь это должно вернуть что-то вроде <img src="https://your-dist-url.cloudfrond.net/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">
Подробнее об этом вы можете прочитать в официальной документации.