Modo performante per archiviare file di immagine in NodeJS su ogni richiesta dell'utente

0

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.

    
posta Pratish Shrestha 27.01.2018 - 19:03
fonte

1 risposta

2

Consenti agli utenti di capirlo.

Ciò che non puoi gestire è un utente che scarica ogni singolo file singolarmente o ti fa archiviare ogni singolo file quando lo desideri.

Quindi non farlo. Una volta al giorno, aggiorna l'archivio e fornisci un link e un link a ogni immagine caricata oggi. Lascia che l'utente decida se ha davvero bisogno delle cose vecchie, di oggi o di entrambi.

    
risposta data 27.01.2018 - 21:36
fonte

Leggi altre domande sui tag