Изображения разного размера, скорее всего, будут где-то кэшироваться, а не обрабатываться каждый раз во время доступа. Когда загрузка произойдет, вы создадите все необходимые вам размеры и сохраните их (в файлах или в вашей базе данных). Этот метод использует большую часть дискового пространства для хранения изображений всех размеров, но при этом загружает всю обрабатываемую нагрузку в момент загрузки, что обеспечивает более быстрый доступ позже.
В качестве альтернативы, если ожидается, что нагрузка не будет большой, вы можете создать разные размеры в первый момент доступа к этим размерам, а затем сохранить их для будущего использования. Таким образом, этот метод использует меньше дискового пространства, создавая только те изображения, которые действительно используются, но будет ограничивать время доступа при первом использовании размера изображения. Будущее время доступа будет быстрым, получая доступ к кэшированному изображению.
Приложение для больших нагрузок
Попробуйте выполнить обработку изображения на отдельном рабочем сервере. В идеале интерфейсный сервер и рабочие серверы должны совместно использовать монтируемое хранилище, на которое загружаются и хранятся образы, сохраняя пропускную способность передачи между ними. В момент загрузки оригинала основное приложение помещает изображение в очередь для обработки работником. Изображения не могут быть доступны для использования до тех пор, пока не будут обработаны, но нагрузка обработки остается независимой от внешнего интерфейса, поэтому она не оказывает непосредственного влияния на работу конечного пользователя.
В зависимости от того, сколько загрузок вы ожидаете в минуту, рабочий процесс может быть таким же простым, как и задание cron, выполняемое каждую минуту, для опроса таблицы ожидающих задач загрузки (зарегистрированных основным приложением), выполнения преобразований и обновления. таблица, когда они были завершены. Однако, если одна минута слишком долгая, вам потребуется непрерывно работающий рабочий процесс для опроса новых задач. Очевидно, что это более сложно реализовать.
Независимо от того, что вы делаете, не восстанавливайте альтернативные размеры изображений каждый раз, когда они вам нужны. Храните их где-нибудь.