Dimensioni del file
Hai bisogno di gestire la vasta gamma di problemi che derivano dalla dimensione delle immagini - sia compresse che non, le immagini vanno da centinaia di KB e fino a un massimo di dieci volte superiore alla tipica quantità di dati tua handle di frontend / backend per operazione.
Pertanto, la prima strategia consiste nel concentrarsi sulla riduzione della dimensione dell'immagine. Non preoccuparti di tecniche che migliorano solo poche percentuali: per migliorare le cose, è necessaria una compressione di un ordine di grandezza migliore.
Il miglior approccio per ridurre le dimensioni del file è ridimensionare l'immagine, il più possibile senza far arrabbiare gli utenti.
Se utilizzi JPEG o WebP (o altri formati con perdita di dati), puoi provare a utilizzare un livello di qualità diverso. A volte il miglior compromesso si ottiene da una combinazione di ridimensionamento e regolazione del livello di qualità. Non limitare i fattori di ridimensionamento alle potenze di due.
Il secondo migliore approccio di compressione dell'immagine dipende dal tipo di contenuto dell'immagine. Avrai bisogno di conoscere le basi dei formati di immagine compressi e di essere creativo applicando queste basi.
Con un approccio molto semplice, ampie aree di colore uniforme vengono semplicemente tagliate fuori dall'immagine e sostituite con un colore di sfondo, che deve essere dipinto dall'app, utilizzando lo stesso esagono RGB.
Sul controllo delle versioni
Il database di back-end deve essere in grado di fornire un checksum, una data / ora (ultima ora modificata) o un numero di versione del file che serve ad informare l'app se hanno il file più aggiornato.
Nel mantenere l'utente dalla noia
Potrebbe essere necessario mostrare miniature piccole e veloci da scaricare (che sono versioni ridimensionate dell'immagine) nel caso in cui gli utenti della tua app siano rapidi. Assicurati che queste miniature siano correttamente memorizzate nella cache dal back-end - caricando le anteprime dal disco aggiunto alla latenza, che sconfigge lo scopo.
Elaborazione delle immagini di backend
Sembra che il consiglio prevalente su Programmers.StackExchange sia quello di mantenere una coda di operazioni di elaborazione delle immagini da eseguire; la coda che deve essere eseguita da un processo di lavoro di ImageMagick out-of-process; i risultati vengono aggiunti ad un'altra "coda finita" che deve essere gestita dal back-end.