создавай превьюшки при их отсутствии рядом с картинкой и сохраняй, в следующий раз они уже будут лежать рядом с картинкой и ты будешь брать с диска уже а не генерировать
ну ты превьюшки где генеришь, туда поставь метод "дай_превью" вместо "сгенерируй_превью". И в "дай_превью" уже будет логика взять с диска или сгенерировать и сохранить на диск