Когда вы создаете миниатюру, это зависит от нескольких факторов (которые я рассмотрю), но вы никогда не должны отказываться от вывода чего-то подобного (если вы никогда не будете использовать его снова), поскольку это действительно дорогая операция.
В любом случае, два основных варианта «когда создавать миниатюру»:
При первом запросе. Это распространено, и это означает, что вы не генерируете миниатюры, которые никогда не используются, но это означает, что если у вас есть страница, заполненная миниатюрами первого раза, то сервер может перегружаться процессами PHP, генерирующими миниатюры.
У меня была похожая проблема с Sorl + Django, когда я генерировал 100+ миниатюр на запрос для первых нескольких запросов после загрузки, и это в основном приводило к зависанию всего сервера в течение 20 минут. Не хорошо.
Создание всех необходимых миниатюр при загрузке. Поскольку загрузка занимает много времени, вы сильно ломаете процесс обработки. Вы также можете извлечь его из процесса (т. Е. Использовать другой скрипт для обработки загрузок - возможно, даже не в PHP).
Очевидным недостатком является то, что вы расходуете дисковое пространство, которое в противном случае вам, возможно, не понадобилось бы ... Но, если вы не говорите о сотнях тысяч миниатюр, небольшой процент неиспользованных, вероятно, не сломается банк.
Конечно, если дисковое пространство является проблемой, может быть аргумент для передачи миниатюры в CDN одновременно с обработкой.
Одна заметка, когда вы сохраняете миниатюры, довольно часто вы хотите изменить размер миниатюр в некоторой точке вниз по линии или, возможно, захотите два небольших варианта. Я считаю очень полезным сделать имена файлов очень конкретными, поэтому, если исходное изображение image.jpg
, версия 200x200 будет image-200x200.jpg
.