Tutte le immagini in una cartella per un sito web?

1

Durante la creazione di siti Web, è meglio avere un sacco di immagini in una cartella o separarle?

È qualcosa che è sempre stato nella mia mente, ma non ho mai fatto ricerche su questo argomento, e googling non mi ha dato molte risposte.

Quindi ho iniziato a costruire principalmente siti per agenzie immobiliari da quando ho iniziato, e mi è sempre piaciuto organizzare le immagini in cartelle, diciamo in webroot / photos / $ propertyId / ma a volte ho visto siti Web che memorizzavano tutte le immagini in una cartella e differenziandoli principalmente dal nome.

Non ho mai dovuto costruire un sito web enorme, quindi questo è stato nella mia mente ma non mi riguarda troppo, ma mi piacerebbe sapere, in generale, quale dei due modi è un approccio migliore. C'è davvero una differenza di prestazioni percepibile dall'uomo quando si eseguono azioni diverse come cercare / eliminare quei file?

Ricorda che a volte non c'è un limite di immagini sulle gallerie, quindi avere una colonna per percorso / nome immagine nella riga della proprietà non è spesso un'opzione per me, dovrei usare un'altra tabella per metterle in relazione.

Vorrei anche ricordare che, ad esempio, nel mio ultimo progetto ho dovuto gestire decine di GB di immagini, avevamo circa 300000 proprietà e avevano consentito di ottenere una media di 10 immagini per proprietà.

    
posta aleation 13.06.2013 - 10:06
fonte

2 risposte

7

La maggior parte dei file system limita il numero di file che è possibile avere in una directory, il che significa che si è costretti a utilizzare comunque i sottodirectory se l'importo può aumentare indefinitamente. Attenzione c'è anche un limite al numero di dirs (che di solito è più basso, diciamo 32000 su ext3)

Se riesci a calcolare il percorso esatto di un file, non ci sono problemi di prestazioni nel leggere quel file.

L'elenco dei file in una directory enorme può diventare davvero lento. Lo so per esperienza.

Consiglierei di usare l'id e poi l'operatore modulu (%) per capire dove mettere il file. Semplice e scalabile. Ad esempio il percorso dell'immagine con ID 12345 potrebbe essere creato in questo modo:

12345 % 1000 = 345

Finisce in:

/webroot/photos/345/12345.png
    
risposta data 13.06.2013 - 11:30
fonte
0

L'alternativa è memorizzare i file stessi in un database (come blocchi di byte di grandi dimensioni). Tuttavia, questo ha un impatto sulle prestazioni, e alcuni dicono che non è proprio ciò per cui sono stati creati i database.

L'unico vantaggio dei database che ho ascoltato è che è più sicuro - qualcuno che rovista sul filesystem del webserver potrebbe afferrare le immagini, ma sarebbe più difficile per loro se si trovasse in un database. (E naturalmente, perdi la sicurezza se memorizzi le immagini ovunque, il che sarebbe la mia unica raccomandazione per aiutare le prestazioni)

Inoltre, può valere la pena notare che un'altra alternativa è l'hosting di immagini con professionisti come Amazon. Costa un po 'di soldi, ma gli utenti sono connessi a server vicini a se stessi e tutto ciò che il tuo server deve fare è mantenere gli URL corretti per ogni immagine.

    
risposta data 13.06.2013 - 15:33
fonte

Leggi altre domande sui tag