io userei la terza strada, quando ti viene richiesta l'anteprima dell'immagine, che tu richiedi ad un file php, questi si limita a verificare se il file dell'immagine piccola esiste sul disco e se non esiste la genera e la restituisce
o, ancora meglio, metti un htaccess nella cartella con le thumbnail per far mandare ad un file php l'esecuzione tramite rewrite rules se il percorso richiesto non esiste e questo si occupa di generare l'immagine e restituirla oltre che scriverla sul disco
il nome del file lo puoi comporre tramite il nome/codice dell'immagine e le dimensioni in modo da poter variare la dimensione quando vuoi e senza problemi e nel contempo conservando la cache e dando la possibilità di far pulizia
per ridimensionare l'immagine devi usare le GD, se cerchi sul forum c'è di tutto e di più, ma in ogni caso ti sconsiglio di fare l'immagine quadrata e poi rimpicciolirla, non è molto carino, ti conviene molto più ridimensionarla mantenendo le proporzioni facendo si che il lato più lungo corrisponda alla lunghezza massima del lato del quadrato e aggiungere uno sfondo all'immagine (o se fai una PNG usi la trasparenza alpha e via) cosi non si rovina l'immagine e le sue proporzioni!
Questo, aggiunto alla precedente soluzione, è quasi perfetto![]()