Firefox中使用的当前缓存哈希函数是什么?

时间:2011-09-07 03:13:05

标签: function firefox caching hash

有没有人知道从mozilla firefox使用的URL生成哈希的缓存映射哈希函数是什么?我已经找到了这个http://benlast.livejournal.com/29164.html,它提供了一个非常好的示例代码,不幸的是我认为它已经过时并且在当前版本的Firefox中不再使用了。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以在此处查看Firefox使用的哈希算法:http://hg.mozilla.org/mozilla-central/file/09935ede3c77/netwerk/cache/nsDiskCacheDevice.cpp#l272。它非常简单,但与您链接的不同(我检查过,Firefox 3.5和Firefox 3.6之间发生了变化)。从本质上讲,它似乎将URL视为无符号整数序列(little-endian,必要时用零填充)并将它们添加到变量abc(前后数字为a,第二和第五为b,第三和第六为c)。然后将这三个变量组合在函数hashmix()中。

ab的初始值为0x9e3779b9c的值稍微复杂一些 - 它作为参数出现。所有呼叫者都使用此参数的默认值,但该值为0(请参阅nsDiskCache.h)。

我想http://burtleburtle.net/bob/hash/evahash.html可能会提供有关所用算法的更多信息。