缓存目录结构

Kar*_*lis 6 caching directory-structure

我正在为我的项目实现缓存.在查看缓存目录结构之后,我看到了很多例子:

cache
cache/a
cache/a/a/
cache/a/...
cache/a/z
cache/...
cache/z
...
Run Code Online (Sandbox Code Playgroud)

你明白了.另一个存储文件的例子,假设我们的文件被命名IMG_PARTY.JPG,一种常见的方法是将它放在一个名为的目录中:

files/i/m/IMG_PARTY.JPG
Run Code Online (Sandbox Code Playgroud)

我想到了一些想法,但我想知道真正的原因.

  • 执行线性查找的文件系统在目录中的文件较少时会更快地查找文件.这种结构传播文件很薄.

  • 为了不搞乱*nix实用程序rm,如采用有限数量的参数并一次删除大量文件往往是hacky(必须通过它find等)

真正的原因是什么?什么是"好的"缓存目录结构?为什么?

小智 3

每次我这样做都是为了避免文件系统中缓慢的线性搜索。幸运的是,至少在 Linux 上,这已经成为过去。

然而,即使在今天,使用基于 b 树的目录,非常大的目录也将很难处理,因为仅仅获得所有文件的列表就需要永远和一天的时间,更不用说找到正确的文件了。