Используйте carrierwave gem для управления загрузками. Настройте драгоценный камень с несколькими «версиями».
Как предполагает eis, обработка изображений не является узким местом производительности, но если вы действительно хотите получить фантазию, используйте гем delayed_job для асинхронной обработки.
При настройке carrierwave вам также необходимо будет установить фактический процессор. Я использую полноценный rmagick, но вы можете использовать минимагик, который проще в настройке. Это все подробно описано в файле readme. Для rmagick / imagemagick, вот нить , которая затрагивает это.
Кроме того, как предполагает eis, изображения обычно надежно кэшируются браузером, и в наши дни браузеры неплохо справляются с изменением размера изображения на лету, хотя, как правило, чем лучше процессор, тем лучше результаты, и именно поэтому я используйте Rmagick.
Последнее замечание: если вы не можете диктовать, что пользователи выбирают для загрузки, вам, скорее всего, понадобится обработать хотя бы одно изображение. Например, кто-то может загрузить огромное изображение размером 8000 X 6000 пикселей с небольшим сжатием. Вы не хотели бы обслуживать это изображение, поскольку у вас меньше контроля. И после того, как вы приступили к настройке обработки изображений, добавьте еще несколько выходных размеров для соответствия различным контекстам дисплея.