Le système de fichiers que vous utilisez est important lorsque vous placez des dizaines de milliers de fichiers dans un seul répertoire. extfs4
sur Linux évolue mieux que NTFS sous Windows.
Windows dispose d'un mode de compatibilité pour les noms de fichiers 8.3 (ancien nom de fichier DOS standard). Cela provoque chaque nom de fichier plus long que abcdefgh.ext
pour avoir un alias créé pour cela quelque chose comme abcd~123.ext
. C'est lent, et obtient très lent quand vous avez beaucoup de fichiers dans un seul répertoire. Vous pouvez désactiver ce comportement de compatibilité ancien. Vois ici. https://support.microsoft.com/en-us/kb/121007. Si vous l'éteignez, c'est une solution rapide pour un problème de performance immédiat. Mais, 20 000 fichiers dans un répertoire est un grand nombre. Votre meilleur pari, sur n'importe quel type de système de fichiers, crée automatiquement des sous-répertoires dans votre système de fichiers en fonction de quelque chose qui change. Une stratégie consiste à créer des sous-répertoires basés sur l'année/mois, par exemple
/showcase/2015/08/image1.jpg (for images uploaded this month)
/showcase/2015/09/image7.jpg (for images next month)
Il est évidemment pas de problème pour stocker les noms de fichiers longs dans votre colonne s_image
dans votre table. Ou, si vous avez un système pour nommer les images, exploitez-le pour créer des sous-répertoires. Par exemple, si vos images sont nommées
cat0001.jpg
cat0002.jpb
...
cat0456.jpg
...
cat0987.jpg
Vous pouvez créer des sous-répertoires basés sur, disons, les cinq premières lettres des noms
/showcase/cat00/cat0001.jpg
/showcase/cat00/cat0002.jpb
...
/showcase/cat04/cat0456.jpg
...
/showcase/cat09/cat0987.jpg
Si vous faites cela, il est préférable de garder l'image noms intacts plutôt que de les rendre plus courts (par exemple, ne le faites pas /showcase/cat09/87.jpg
) parce que si vous devez rechercher une image particulière par son nom, vous voulez le nom complet. Pour autant que je sache, il n'y a rien d'automatique dans un système de fichiers pour faire cela pour vous. Mais ce n'est pas difficile à faire dans votre programme.
Merci pour votre réponse - Je vais essayer Amazon S3 pour l'instant et voir ce que je peux faire. – frosty
Même dans S3, vous ne voulez pas des dizaines de milliers d'éléments dans un seul répertoire dans un compartiment. –