2010-11-09 6 views
1

Je l'ai vu suggéré que vous obteniez un meilleur "équilibrage de charge" dans un cache en utilisant les derniers caractères d'un nom de fichier haché - c'est ce que nginx fait par exemple (module de cache proxy). Quelqu'un peut-il expliquer pourquoi les derniers caractères sont utilisés?Lors de la mise en cache de fichiers basés sur des caractères de hachage, pourquoi utiliser les derniers caractères plutôt que le premier?

EDIT:

Par exemple:

md5('asdf') 
'912ec803b2ce49e4a541068d495ab570' 
md5('asdg') 
'7e6a6a87bf3ffb29a6dd9f14afdc3b88' 

"semblent" assez aléatoire.

Répondre

0

Il est courant d'avoir beaucoup de fichiers commençant par le même préfixe. En inversant le nom, vous pouvez augmenter la randonness.

+1

Ceci est particulièrement vrai si le nom de fichier est un chemin. – nickm

+1

Mais les noms de fichier sont hachés. La question est pourquoi les derniers caractères d'un * hash * sont-ils plus aléatoires que le premier? – jerd

+0

@jerd, il existe différents types d'algorithmes de hachage. md5/sha256/etc sont utilisés pour générer une clé unique et cohérente à partir d'une valeur d'entrée pour la comparaison. Les algorithmes de hachage de cache génèrent un seul nombre à partir d'une valeur d'entrée utilisée pour placer des éléments mis en cache dans un nombre beaucoup plus petit de compartiments. Les algorithmes de hachage de cache sont beaucoup moins uniques et moins aléatoires. –