Изменение размера изображений на лету или хранение разных размеров на диске? - PullRequest
6 голосов
/ 12 августа 2010

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

  1. Хранение различных версий изображения при их загрузке (например, большой, средний, большой, очень большой)
  2. Изменение размера изображения через URL - например, / Содержание / Image / 1? Высота = 300

Что ты думаешь?

Edit: Мне было очень трудно принять один ответ поверх другого, поэтому для любого, кто читает этот вопрос, не торопитесь, чтобы прочитать оба ответа, потому что принятый ответ был выбран подбрасыванием монеты :) Они оба одинаково хороши.

Ответы [ 2 ]

4 голосов
/ 12 августа 2010

Если я взгляну на Викимедиа, они используют какую-то комбинацию.

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

Обновление

После прочтения вашего комментария.

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

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

3 голосов
/ 12 августа 2010

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

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

...