Задать вопрос
@Sahnen

Загрузка фотографий на сервер — как правильно?

В силу некоторых причин решил отказаться от CarrierWave и сделать свой костыль. Ситуация следующая: необходимо загрузить фотографии в альбом, который хранится в облаке. В альбоме для каждой фотографии хранится оригинал и отресайзенные миниатюры для разных превью. Я вижу 2 варианта:

1) Делать это все в браузере и загружать напрямую в облако.
Плюс: с сервера снимается вся нагрузка. Серверу достаются только ссылки на готовые изображения в облаке.
Минус: в облаке нужно пройти авторизацию с помощью GET-запроса, поэтому данные для доступа приходится хранить в js-скрипте, т.е. открытые для любого пользователя.

2) Загружать изображение сначала на сервер, затем, с помощью, например rmagick, сделать отресайзенные копии и уже с сервера эти копии выложить в облако.
Плюс: все логины пароли скрыты от любопытного пользователя.
Минус: нагрузка на сервер + траффик.

Предположу, что в первом случае можно в облаке запретить кроссдоменные запросы и, вроде как, можно и не прятать данные для доступа. По второму варианту мыслей нет.

Как, всё-таки, правильнее сделать, или может есть более элегантные решения?
  • Вопрос задан
  • 339 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@glitch536
javascript разработчик
На мой взгляд, такой вещи как "правильно" не существует, есть лишь задача, которая выполняется или нет. Однако, позволю себе несколько советов исходя из описания

1. Безопасность важнее производительности. Хранить пароли в открытом виде на клиенте - плохая идея. Если рассматривать заливку на облако, то в облако пользователя с предоставлением затем доступа к файлам вашему приложению

2. Если Вы уверены, что производительность будет узким местом, можно рассмотреть вариант нарезки на клиенте (код усложнится из-за необходимости поддержки разных браузеров). Проблему можно решить также покупкой более сильного железа.

В общем случае я применяют такую стратегию: для начала реализовать самый простой вариант и оптимизировать в случае необходимости.
Ответ написан
Комментировать
@c0va23
Backend-разработчик
Есть ещё одни вариант — использовать облачные сервисы, который сам умеет хранить, "нарезать" и раздавать картинки.

Я пользовался cloudinary.com, но у меня были небольшие нагрузки. Так что я не могу сказать на сколько эффективно он будет справляться. Если не будет устраивать cloudinary, то, думаю, что найдутся и другие аналоги.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы