Rails 3 - лучше создать больше миниатюр или только одну и изменить ее размер CSS - PullRequest
0 голосов
/ 19 февраля 2012

Я создаю маленькое приложение для магазина и теперь думаю о более быстром способе загрузки изображений - мне нужны изображения 4 размеров. Первая идея - при загрузке создать 4 миниатюры, и это все - возможно, самый простой способ, но что меня беспокоит - создание 4 размеров с помощью загрузки может занять много времени ... это то, что мне не нравится, и я бы хотел избежать это.

Вторая идея - загрузить изображение - например, в размере 300x300, и в тот момент, когда мне нужно в магазине отобразить большой палец этого изображения, поэтому в HTML и CSS я просто устанавливаю значение : style = > 'ширина: 165px;' .

Что вы думаете об этом? Какой будет лучший вариант?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2012

Используйте carrierwave gem для управления загрузками. Настройте драгоценный камень с несколькими «версиями».

Как предполагает eis, обработка изображений не является узким местом производительности, но если вы действительно хотите получить фантазию, используйте гем delayed_job для асинхронной обработки.

При настройке carrierwave вам также необходимо будет установить фактический процессор. Я использую полноценный rmagick, но вы можете использовать минимагик, который проще в настройке. Это все подробно описано в файле readme. Для rmagick / imagemagick, вот нить , которая затрагивает это.

Кроме того, как предполагает eis, изображения обычно надежно кэшируются браузером, и в наши дни браузеры неплохо справляются с изменением размера изображения на лету, хотя, как правило, чем лучше процессор, тем лучше результаты, и именно поэтому я используйте Rmagick.

Последнее замечание: если вы не можете диктовать, что пользователи выбирают для загрузки, вам, скорее всего, понадобится обработать хотя бы одно изображение. Например, кто-то может загрузить огромное изображение размером 8000 X 6000 пикселей с небольшим сжатием. Вы не хотели бы обслуживать это изображение, поскольку у вас меньше контроля. И после того, как вы приступили к настройке обработки изображений, добавьте еще несколько выходных размеров для соответствия различным контекстам дисплея.

0 голосов
/ 19 февраля 2012

Я не думаю, что этот вопрос относится к рельсам, но является более общим.

Как правило, вы хотите создавать изображения всех размеров, в которых они будут использоваться.Создание четырех размеров во время загрузки обычно не занимает много времени (я имею в виду загрузку изображения один раз, а затем создание необходимых изображений на стороне сервера на основе этого) - по крайней мере, если вы сравните его с объединенным временемвсе пользователи загружают изображение самого большого размера, а затем изменяют его размер на лету, когда все, что им нужно, это маленький эскиз.Обычно загрузка изображений происходит не так часто.Создание других изображений также может быть отложено на запланированное задание, которое будет выполняться ночью, поэтому это не повлияет на работу пользователей на стороне администратора.

При этом, если ваши пользователи в любом случае вынуждены каждый раз загружать файлысамое большое изображение, оно все равно будет в кеше, и никаких дополнительных издержек не возникнет, если вы затем измените его размер с помощью css везде, где вам это нужно, в меньшем размере.В этом случае я думаю, что было бы хорошо просто использовать самый большой размер.Обычно вы можете избежать использования изображений самого большого размера в большинстве случаев.

...