Это зависит от модели использования сайта, но, в принципе, сколько раз вы ожидаете, что каждое изображение будет просмотрено?
В случае с миниатюрами, они, скорее всего, будут присутствовать довольно долго (изображение загружается один раз и никогда не изменяется, поэтому миниатюра также не меняется), поэтому, как правило, стоит генерировать, когда полная изображение загружено и сохраните их для дальнейшего использования. Если сайт не будет полностью мертвым, их будут просматривать много (сотни или тысячи) раз в течение срока их службы, и в наши дни диск намного дешевле, чем время ожидания. Это также становится более значительным при увеличении нагрузки на сервер.
И наоборот, для чего-то вроде биржевых диаграмм, которые обновляются каждый час (если не чаще), в такой ситуации лучше создать их на лету, чтобы не тратить время ЦП на постоянную генерацию изображения, которые ни один пользователь не увидит.
Или, если вы хотите получить фантазию, вы можете оптимизировать работу с любым шаблоном доступа, генерируя изображения «на лету» в первый раз, когда они необходимы, а затем показывая предварительно сгенерированное изображение до тех пор, пока не будут сгенерированы данные. Из изменений, в этот момент вы удаляете его, чтобы он был восстановлен в следующий раз, когда это необходимо. Но это было бы излишним для чего-то столь же статичного, как миниатюры, ИМО.