изменение размера изображения на лету против полноразмерного изображения - PullRequest
1 голос
/ 17 ноября 2011

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

Если кеш не вариант, что будет лучше:

  1. Использование php для сжатия изображения и отправки его клиенту.

  2. Отправьте исходное полноразмерное изображение и дайте клиенту уменьшить его (с простыми атрибутами width и height)

Я склонен думать, что второе - лучшее решение, но я хотел бы услышать больше мнений.

Спасибо!

Edit:

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

Причина «кеш не является опцией»:

Обсуждаемые изображения - это 5 "рекомендуемых" изображений на главной странице, которые не будут оставаться неизменными в течение более часа. так что не стоит ли создавать еще одну копию каждого загруженного изображения для этого?

Ответы [ 4 ]

1 голос
/ 17 ноября 2011

Это зависит от вашего потока, но я бы быстро изменил их размер и сохранил бы большой палец. Поэтому, если большой палец существует, подайте его, если не измените размер на лету, и подайте его (сохраняя большой палец).

Тогда в cronjob вы можете удалить старые изображения.

1 голос
/ 17 ноября 2011

Учитывая «достаточно» ресурсов ЦП, я предпочел бы уменьшить изображения перед их отправкой, чтобы облегчить работу людям с плохими соединениями и мобильными устройствами.

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

1 голос
/ 17 ноября 2011

По сути, это зависит от

  • Каково оригинальное / желаемое соотношение ширины / высоты?Нет ничего страшного в том, чтобы обрабатывать изображение 500x500 и показывать его как 250x250, но затрачивается пропускная способность для изображений 1920x1080.Кроме того, мобильным устройствам может не хватать ресурсов для реального отображения веб-страницы, если вы обслуживаете слишком много больших изображений.
  • Что у вас больше: пропускная способность или мощность процессора?Можете ли вы убедиться в том, что никто не использует ваш изменяющий размер на лету в качестве цели для DOS?

Обычно решения с кешем, даже очень временным, намного лучше.

[AD edit]

Обсуждаемые изображения - это 5 «рекомендуемых» изображений на главной странице, которые не будут оставаться неизменными в течение более часа.так что не стоит ли создавать еще одну копию каждого загруженного изображения для этого?

Это так.Но вы можете просто создать отдельную папку для этих миниатюр и настроить задание cron, чтобы стирать файлы старше часа.Вот пример, который я использую на своем сайте (настроено на 30 минут):

*/15 * * * * find /var/www/directory/ -mmin +30 -exec rm -f {} \; >/dev/null 2>&1

0 голосов
/ 17 ноября 2011

Как насчет 3. Не изменяйте размеры изображений в процессе, который должен обслуживать их для клиента - заставьте фоновый процесс выполнить изменение размера, отправьте миниатюры, если изменили размер, полные изображения, если еще нет.Это дает то преимущество, что вы можете регулировать процесс изменения размера независимо от пользовательских запросов.

...