Scenario:
Le immagini vengono caricate sul server una volta ogni tanto. Gli utenti inviano una richiesta API per scaricare tutte quelle immagini che sono state caricate sul server (le immagini risiedono nel server stesso). Invece di scaricare ogni singolo file, il server raccoglie tutte le immagini, lo archivia e poi invia il file zip all'utente.
Problema:
Il problema con questo approccio è che, anche per un singolo utente, l'utilizzo della CPU è molto elevato durante il processo di archiviazione, ma il server deve supportare più di 100 richieste simultanee per il download. Inoltre, le immagini possono essere caricate in qualsiasi momento sul server, quindi anche i file pre-archiviati non sono una soluzione.
Possibile soluzione
Una possibile soluzione per il mio caso d'uso: Poiché le immagini sono le stesse per tutti gli utenti, il server archivia tutte le immagini in una qualsiasi delle prime richieste, quindi sulle seguenti richieste, controlla se è stata aggiunta una nuova immagine (forse memorizza l'ultimo JSON in memoria e lo diff con quello attuale). Se non vengono aggiunte nuove immagini, inviare il file zip precedentemente archiviato, altrimenti archiviarlo di nuovo. Ma questo sarebbe ancora lo stesso se diversi utenti hanno file diversi da scaricare.
Cosa si potrebbe fare in questo scenario? Pensieri? Soluzioni?
Grazie.