PHP динамическое изменение размера изображения (на лету) - PullRequest
5 голосов
/ 15 апреля 2011

На данный момент наш сайт хранит 2/3 изображения фиксированного размера.Они создаются во время загрузки и распространяются через наш CDN.Однако нам нужно реализовать более гибкое решение, мы разрабатываем мобильные и планшетные приложения, для которых требуется множество разных размеров.Наше предлагаемое решение заключается в создании сценария PHP, который может принимать идентификатор изображения (id / type / url и т. Д.) И ограничения размера.Затем сценарий может создать изображение на лету и кешировать его в следующий раз.

Является ли это возможным решением?

Также на данный момент CDN защищает наш веб-сервер от значительной нагрузки.Есть ли способ включить CDN в этот процесс после того, как изображение было сгенерировано один раз?Единственный способ, которым я могу думать, это заставить скрипт возвращать URL-адрес ресурса изображения, но затем клиент должен сделать 2 HTTP-запроса.Перенаправление может быть быстрее, но разве это не плохая практика для скорости?

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

Предполагается, что этот тип системы больше читает, чем записывает.

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

В этом смысле вы должны определить необходимые размеры и создать эти изображения с измененным размером во время загрузки (т. е. сразу послезагрузка).

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

Опять же, не дайте себя одурачить, все, что точно вовремя - A_LOT_SLOWER, потому что у вас проверен isincache, часть create итогда только возврат.

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

0 голосов
/ 09 сентября 2011

Если на вашем сервере установлен Imagik, как и большинство в стандартной комплектации. Imagik на самом деле поддерживает это на лету, просто нужно создать для этого функцию, извините, это не удивительно полезно, но я использовал это в прошлом.

0 голосов
/ 15 апреля 2011

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

...