Memorizza l'immagine generata nel database o la genera su server / client

1

Ho pensato a quale potrebbe essere il modo più veloce per mostrare i dati di base64 / img all'utente, potrei generare i dati quando l'utente è registrato e quindi memorizzarlo nel database, o generarlo ogni volta che viene richiesto.

questo è qualcosa che sto pensando di rendere la risposta veloce e potrei semplicemente generare i dati img nel client. quali molti elementi li avranno generati, ma non so se questo potrebbe rendere i tempi di caricamento più lunghi.

Quindi, è meglio memorizzare i dati generati da base64 / img sul database? .. se non poi chi dovrebbe generarli .. client o server?

aggiornamento : per essere più chiari sulla domanda, i dati generati sono Identicon , la mia preoccupazione è quale sarebbe il modo più veloce per mostrarlo all'utente, questo potrebbe essere mostrato una volta o più volte in una singola visualizzazione indipendentemente dal potere sul server

    
posta Oscar Reyes 14.07.2015 - 09:04
fonte

3 risposte

1

... i could generate the data when the user is registered and then store it to database, or generate it every time it is requested.

Mi sembrano due operazioni completamente diverse :

1) Genera dati "immagine" [statici] quando l'utente si registra e lo memorizza in un database.

2) Genera dati dinamici di "immagine" ogni volta che l'utente visita una pagina.

La mia domanda è questa: dopo aver caricato i dati di "immagine" in un database, cosa hai intenzione di fare con esso? Se la risposta è semplicemente ...

Read it back, write it to a file and display it in the user's browser

... quindi è meglio lasciare l'"immagine" nel file system, da dove può essere servita direttamente.

Anche se stai aggiungendo una sorta di contenuto dinamico all '"immagine", allora la memorizzazione o, almeno, la memorizzazione in cache nel file system renderà comunque un'operazione più veloce, nel complesso.

Cercare di fare qualsiasi cosa "lato client" è rischioso. Anche mettendo da parte i vaghi delle implementazioni del browser di JavaScript (almeno fino al decollo del link WASM ), sei totalmente dipendente da la potenza di elaborazione disponibile della macchina client per gestire tutta l'elaborazione "immagine" che si desidera eseguire. Potrebbe andar bene sul nuovo e brillante telefono Uber di qualcuno, ma sul vecchio e goffo laptop di 10 anni? Forse non così tanto.

    
risposta data 14.07.2015 - 14:05
fonte
1

Direi che il modo più semplice è di archiviarlo fisicamente: non è necessario alcun tipo di gestore o chiamata al database per recuperare l'immagine, un'ulteriore gestione molto probabilmente sarà più semplice quanto la gestione della cache client.

In realtà non ci sono molti buoni motivi per ingombrare il tuo database con le immagini, quindi direi che questa alternativa è accettabile solo in alcuni casi specifici, come il bisogno di questa immagine distribuita tra diversi server. E anche allora, potresti pensare a qualcosa come una CDN per condividere immagini archiviate fisicamente su più server.

In alcuni casi, potresti anche pensare alle immagini codificate di BASE64 nel file CSS, che potrebbero aprire le porte alla reattività e avere un impatto sul tempo di caricamento riducendo il numero di richieste, con un impatto sulle dimensioni dei file CSS.

Quindi, per farla breve: a meno di requisiti molto specifici, il migliore è salvarlo in un filesystem (distribuito).

    
risposta data 14.07.2015 - 09:19
fonte
0

Nosthertus, per favore chiarisci di più la tua domanda. Risponderò basandomi su ciò che posso capire ora, ma cambierò / aggiornerò una volta chiarito.

Se generi una volta e leggi molte volte, allora la memorizzazione è una buona idea.

L'archiviazione direttamente nel database è un po 'più di programmazione, ma ha il vantaggio di mettere tutto in una vista logica che può essere utilizzata da qualsiasi app. L'archiviazione in un filesystem non è consigliabile perché non si ottengono alcuni benefici del DB (a seconda della scelta della piattaforma del database) come la gestione delle transazioni ecc.

Tuttavia, quel poco che so di identicons è che, a seconda di ciò che si sta facendo, l'identicon per qualsiasi uso potrebbe essere diverso se si spostasse su un'altra macchina o su un indirizzo IP. Quindi in quel caso devi generare ogni volta.

La tua domanda successiva su "è meglio generare su client o server" ... Questo è importante in quanto puoi garantire che se generata su client o server, l'immagine risultante sarà identica? Questo dipende dall'algoritmo che stai usando.

Quindi i chiarimenti necessari sono .. invece di "supponiamo" vaga, puoi indicare chiaramente cosa stai cercando di fare? Quali sono i tuoi dubbi? Prestazioni o utilizzo dello spazio? In che modo questa immagine viene utilizzata nell'interfaccia utente?

    
risposta data 14.07.2015 - 09:41
fonte

Leggi altre domande sui tag