Могу ли я размещать изображения в герою? Или мне нужен S3?
Я развертываю свое веб-приложение (это для корпоративного клиента). Таким образом, пользователи не будут добавлять изображения, но только бизнес будет.
Я развернулся в Heroku, и мои изображения все еще отображаются. Когда мне нужно использовать S3? У меня есть всего 100 изображений на сайте, и размер будет варьироваться, как > 7 в неделю. Могу ли я использовать только герою?
Ответы
Ответ 1
Короткий ответ: если вы разрешаете пользователям или администраторам загружать изображения, вы не должны использовать файловую систему Heroku для этого, так как изображения внезапно исчезнут.
Как объяснено в документации Heroku:
Каждый dyno получает свою собственную эфемерную файловую систему со свежей копией самого недавно развернутого кода. В течение жизненного цикла dynos его запущенные процессы могут использовать файловую систему в качестве временной блокнотной памяти, но никакие файлы, которые пишутся, не видны для процессов в любом другом dyno, и любые записанные файлы будут отброшены в момент остановки или перезапуска dyno.
Это означает, что пользовательские загруженные изображения в файловой системе Heroku не только уничтожаются при каждом нажатии, но также и при каждом перезагрузке dyno, который иногда случается (даже если вы часто их пинговали, чтобы не допустить их спать).
Как только вы начнете использовать второй веб-дино, он не сможет прочитать другую файловую систему dyno, поэтому изображения будут видны только с одного динамика. Это может вызвать странные проблемы, когда пользователи иногда могут видеть изображения, а иногда и нет.
Тем не менее, вы можете временно хранить изображения в файловой системе Heroku, если вы реализуете передачу файла через внешний файл.
Ответ 2
Консоли проекта
FiveDigit
Ответ очень хороший - есть что-то большее, чтобы рассмотреть; роль asset pipeline
в Rails
Если используемые вами изображения используются в качестве активов (IE они используются в макете, они не изменяются пользователем), вы можете сохранить их в папке assets/images
. Нет ограничений на количество активов, которые вы можете хранить с вашим приложением, но вы должны быть уверены в том, что это такое - это файлы, которые помогают вашей работе приложения; не файлы, которые могут быть загружены/обработаны:
Конвейент ресурсов обеспечивает структуру для конкатенации и минимизации или сжимать ресурсы JavaScript и CSS. Он также добавляет способность писать эти активы на других языках и предварительные процессоры, такие как CoffeeScript, Sass и ERB.
Консоль актива сжимает и отпечатывает файлы stylesheet
, image
и js
, которые он имеет, при развертывании вашего приложения к подобным Heroku или любому другому серверу. Это означает, что если эти файлы не изменяются, вы можете сохранить их там
-
S3
Причина, по которой вы хотите использовать подобные S3
, - это особенно, если ваши файлы изображений предназначены для изменения (пользователь может загружать/редактировать их). Независимо от файловой системы Heroku, если изображения привязаны к изменениям в БД, вам необходимо сохранить для них центральный магазин - если вы меняете серверы, они должны быть доступны
Чтобы сделать это, вы должны убедиться, что вы цените, как вы хотите, чтобы файлы работали - они будут постоянно управляться пользователем или нет? Если это так, вам нужно изучить интеграцию S3
в ваше приложение.