Стратегия такая: на сервере хранится только оригинальное изображение. Когда юзер пытается получить сжатое, он идет на адрес, например
/images/userpic-100x100.jpg
Если по этому адресу еще нет такого изображения, то сервер перенаправит юзера на скрипт
/generate.php?address=/images/userpic-100x100.jpg
. Этот скрипт сожмёт оригинальное изображение, сохранит его по адресу
/images/userpic-100x100.jpg
и покажет пользователю. В следующий раз при запросе адреса
/images/userpic-100x100.jpg
будет показано уже сгенерированное изображение.
Для того чтоб сервер знал, куда перенаправлять юзера в случае, если сжатого изображения еще нет, нужно в файл
.htaccess
добавить этот код:
RewriteCond %{REQUEST_URI} ^/images/
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule (.*) /generate.php?address=$1 [L]
Ну и в файле generate.php уже разбирать переменную
$_GET['address']
, выяснять какую именно картинку хотел получить юзер, жать её, сохранять и перенаправлять обратно на
$_GET['address']
.