Генерация изображений по сути долгая так как упирается в ресурсы сервера (CPU) и ускорить тут (на лету) вряд ли особо получится.
Самый правильный вариант - кешировать сгенерированные превью на диск.
Можно оставить thumb.php как промежуточное звено, при первой генерации сохраняем резалт на диск, и при повторных запросах проверять что если файл thumbnail'а есть на диске - считывать и отдавать его.
Но самый быстрый и оптимальный вариант это всё-же кешировать и отдавать превью напрямую веб сервером, (без РНР), например при аплоаде сразу делать нужные размеры.
Можно обойтись вообще без РНР и использовать Модуль ngx_http_image_filter_module
https://habr.com/en/post/94435/
https://nginx.org/en/docs/http/ngx_http_image_filt...