В общем целом, существует два подхода к ресайзу изображений. И оба имеют как плюсы, так и минусы.
Первый вариант. Ресайз изображений происходит в момент обращения посетителя.
Плюсы:
1. При разработке админки не задумываемся о размерах, дизайне и храним только приведенный к достаточному размеру оригинал.
2. Меньшее занимаемое миниатюрами дисковое пространство. Автоматически освобождаем место от миниатюр, к которым долго не было обращения.
3. При смене дизайна сайта ресайз со временем произойдет сам по себе. Старые миниатюры со временем удалятся (п. 2).
Минусы:
1. Вероятность превышения пиковой нагрузки на сервера в некоторых случаях (например, зашел робот поиска картинок).
Второй вариант. Создание всех необходимых размеров в момент загрузки изображения контент-менеджером.
Плюсы:
1. Прогнозируемая нагрузка на процессор.
2. Прогнозируемое свободное место на диске.
Минусы:
1. Ручная работа по созданию механизмов удаления старых и генерации новых миниатюр при смене дизайна или требований.
Вердикт.
Мне ближе первый подход. Еще в 2006 при разработке прошлой
Всей Уфы я понял все его прелести. Тогда этой рутиной занималась связка PHP + mod_rewrite.
Изображение запрашивается у скрипта. Если файл существует в кеше, то отдаем из кеша. Нет — генерируем и сохраняем в кеш. Так как фактически изображение запрашивается у скрипта, то проблема кеширования изображений в браузере лежит на плечах скрипта. Ключевые слова: ETAG, Last-modified и функция PHP apache_request_headers, чтобы узнать версию файла в кеше пользователя (которая, кстати, естественным образом не работает в режиме CGI).
На хабре не так давно был репост
статьи про ресайз изображений на лету. Там пример использования nginx с модулем ngx_http_image_filter_module, что более производительно и проще.
А вы что предпочитаете?
Комментарии (1)
RSS свернуть / развернутьРесайз и выдачу скриптом на лету мы делали у сайта МировоеФото так как приходилось выдавать по 5-6 разных превью с кучей водяных знаков и контролировать доступ. Но это в первый раз, потом уже гененировался кэш и он в другой раз отдавался скриптом. Не люблю такой подход, уж больно зря силы PHP тут использовались :)
На одном другом сайте ипользуется подход выдачи контента маленькими хэлперами со стороны шаблона дизайна. Который работает примерно по логике
В духе, что когда пользователь получит html код уже все изображения будут указывать на статичные ресайзы картинок, одна проблема, что постоянная работа по проверке изображений, хоть и кэшируется файловой системой, но нагрузка всё же существует, причем в двойном виде, как например еще и проверка от веб-сервера и т.п.
MpaK
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.