【发布时间】:2012-04-16 14:13:38
【问题描述】:
我正在为我的 php 应用程序实现一个基于文件的缓存系统。使用时,它可以处理存储在同一个文件夹中的大约 200,000 个文件,使其难以管理:计算文件夹的总大小或列出其中的文件几乎不可能在合理的时间内完成。
我的问题是:将文件保存在单独的文件夹中对性能有好处吗?这样可以减少 IO 时间吗?
【问题讨论】:
-
它只是让列表变慢,访问时间不受影响。我见过的大多数文件缓存系统都对文件名的哈希使用基于树的方法。这大大减少了每个目录的文件数量。即文件
bunny.txt(sha10d9228b316d694f2cb1a9add3fb71e29e55a060a) 将存储在0/d/9/0d9228b316d694f2cb1a9add3fb71e29e55a060a。树的深度可以根据您的需要进行调整。 -
我们已经超越了Army.mil 的文件缓存,但是如果您查看任何页面上的 JS 和 CSS 文件,您可以看到我们是如何以几乎相同的方式组合它们的。看起来很像@Soohjun 提到的。
-
对我来说最重要的是访问时间,大多数时候操作只是查找和读取文件
-
@JavierMarín 它不会加快访问时间,但它可以使处理缓存本身更容易。如果您想手动处理一个文件夹中的 200k 个文件,那将是一个问题。