PHP / JS - Создание эскизов "на лету" или сохранение в виде файлов

StackOverflow https://stackoverflow.com/questions/103707

Вопрос

Для веб-приложения для размещения изображений:

Для моих сохраненных изображений возможно ли создавать миниатюры "на лету" с помощью PHP (или чего-то еще), или я должен сохранить 1 или более миниатюр разного размера на диск и просто загрузить их?

Любая помощь приветствуется.

Это было полезно?

Решение

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

Другие советы

Я использую phpThumb, поскольку это лучшее из обоих миров.Вы можете создавать эскизы "на лету", но это автоматически кэширует изображения, чтобы ускорить будущие запросы.Это создает красивую оболочку вокруг библиотек GD и ImageMagick.Стоит посмотреть!

Было бы гораздо лучше кэшировать миниатюры.Генерирование их "на лету" было бы очень обременительным для системы.

Это зависит от схемы использования сайта, но, в принципе, сколько раз вы ожидаете просмотра каждого изображения?

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top