Серверный продукт для изменения размера, обрезки и кэширования в реальном времени

Я изучаю, какие есть продукты, которые позволят вам запрашивать изображения через HTTP API в произвольных размерах изображений. Сервер будет находиться за CDN, но все равно должен быть способен обрабатывать значительный объем трафика и, возможно, быть сбалансированным по нагрузке.

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

Сторонние сайты и сервисы исключены из-за корпоративных политик.

3 ответа

Решение

Я нашел модуль Apache с открытым исходным кодом под названием mod_dims. Это соответствует большинству моих требований и довольно быстро.

Вы можете использовать ImageMagick с php / perl / python. Это позволит вам изменить размер изображения. Единственный улов здесь, что вы хотите кэшировать изображение, в идеале.

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

пример.

http://example.com/resize/image.php?image=example.jpg&width=640&height=320 который выполняет изменение размера example.jpg. Для того, чтобы это было в состоянии кэширования, image.php должен возвращать перенаправление URL. http://example.com/resize/static/example640x320.jpg

Для второго URL убедитесь, что у вас установлены правильные заголовки срока действия, чтобы CDN мог его кэшировать. Но вы также должны поддерживать отображение
http://example.com/resize/image.php?image=example.jpg&width=640&height=320 до http://example.com/resize/static/example640x320.jpg
потому что при каждом запросе этого изображения будет вызываться скрипт image.php.
Для синхронизации данных в сценарии с балансировкой нагрузки у вас есть общий ресурс nfs или вы используете rsync, если допустима задержка в несколько секунд, или используете загрузку файлов через API (разумеется, для защиты) для синхронизации данных между внутренними серверами.

Под размерами вы подразумеваете размеры файла или высоту / ширину изображения?

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

Если вы хотите изменить масштаб изображения на лету, то это в основном то, что делает сценарий с миниатюрами. Многие из них запускаются заранее, но есть и другие, которые "на лету". Например, модуль Imager CPAN имеет пример CGI-скрипта, который масштабирует загруженное изображение до 200x200.

Другие вопросы по тегам