Должен ли я генерировать каждую миниатюру динамически каждый раз, когда она запрашивается, или сохранять их при загрузке изображения?
Автор вопроса: ShuklaSannidhyaОтветов: 5
Проблема - я хотел настроить на своем веб-сайте функцию загрузки изображений. Но я хотел показать и исходное изображение, и маленькую миниатюру изображения.
Варианты - какой способ лучше - создать отдельное изображение (миниатюру) в каталоге при загрузке изображения или показать уменьшенную версию, уменьшая его высоту и ширину в фиксированном соотношении каждый раз, когда изображение запрашивается?
Как я это делаю сейчас? Как вы думаете, какой из них лучше?
Это общий вопрос для веб-приложений, без конкретного языка.
Есть идеи, как это сделать в Facebook или Google?
Вопрос. Мой вопрос заключается в том, как создавать эскизы и показывать их на веб-сайте - путем создания копии исходного изображения с меньшим размером или путем динамического создания эскиза при каждом запросе.
Создание миниатюры при загрузке почти всегда лучший вариант. Если проблема с хранением, вы можете преобразовать их по запросу, а затем кэшировать результат в хранилище памяти. Если его снова запросить до истечения срока действия кеша, преобразование не потребуется.
Хранение часто бывает довольно дешевым, поэтому я бы, вероятно, не стал прибегать к этой дополнительной сложности.
Ответ 2 · рейтинг 2 · Ed Heal
Просто создайте уменьшенную версию и сохраните на диск. Место на жестком диске очень дешевое. 70 фунтов за пару ТБ.
Ответ 3 · рейтинг 1 · Hendyanto
Создание эскиза - лучший вариант, и он не требует много места на диске. Ваш клиент также будет загружать меньший размер при открытии ваших страниц. преобразование изображения по запросу будет стоить событию больше времени для загрузки вашей страницы;)
Ответ 4 · рейтинг 1 · Millard
Если вы посмотрите на большинство CMS с этой встроенной функциональностью, они почти всегда создают эскиз изображения при загрузке и сохраняют его на сервере.
Это восходит к старинной поговорке "делай то, что делает Google", но с CMS.
Ответ 5 · рейтинг 1 · Neville Kuyt
"Лучше" зависит от установленных вами критериев.
Для большинства приложений дисковое пространство не является проблемой - и если сохранение эскиза является проблемой, сохранение оригинала должно быть огромной проблемой - приличная фотография цифровой камеры будет занимать много мегабайт, тогда как эскиз не должен превышать 50 КБ.
Пропускная способность и производительность (с точки зрения клиента) обычно вызывают большее беспокойство. Если у вас много людей, просматривающих галерею миниатюр изображений, обслуживание миниатюр размером 50 КБ будет значительно быстрее (и дешевле по пропускной способности), чем обслуживание изображений с высоким разрешением в несколько мегабайт.
Кроме того, обслуживая эскизы по URL-адресу, например <img src="images/thumbnail/foobar.jpg">, и задавая соответствующие заголовки кеша, вы должны получить много нисходящего кэширования - это менее вероятно, если вы обслуживаете изображение как <img src="thumbnail.php?image=image/foobar.jpg>, потому что кеши обрабатывают строки запроса довольно консервативно.
Раньше я работал над веб-сайтом, на котором размещались сотни тысяч изображений продуктов; мы настроили ImageMagick для автоматического создания миниатюр. В зависимости от ваших настроек может иметь смысл сделать это при первом запросе эскиза, а не при загрузке файла, потому что преобразование может потребовать значительных ресурсов, а выполнение его во время загрузки займет больше времени, чем мы хотели бы ждать. . Современное оборудование может решить эту проблему.
Также возникает вопрос о синхронизации миниатюр с оригиналами - если пользователь загружает новое изображение, вы должны убедиться, что обновили миниатюру; если оригинал удален, вы также должны удалить эскиз.