2012-04-16 83 views
0

我正在为我的php应用程序实现基于文件的缓存系统。使用时,它可以处理存储在同一文件夹中的大约200,000个文件,使其难以管理:计算文件夹的总大小或列出其中的文件几乎不可能在合理的时间内完成。实现基于文件的缓存的最佳做法

我的问题是:是否有利于将文件保存在分开的文件夹中?这可以减少IO时间吗?

+1

它只是使上市缓慢,访问时间不受影响。我见过的大多数文件缓存系统都使用基于树的方法处理文件名称的散列。这大大减少了每个目录的文件数量。即文件'bunny.txt'(sha1'0d9228b316d694f2cb1a9add3fb71e29e55a060a')将被存储在'0/d/9/0d9228b316d694f2cb1a9add3fb71e29e55a060a'。树深度可以根据您的需求进行调整。 – 2012-04-16 14:22:53

+0

我们已经超越了[Army.mil](http://www.army.mil)的文件缓存,但是如果您在任何页面上查看JS和CSS文件,您都可以看到我们如何以相同方式组合它们。看起来很像@Soohjun提到的。 – DampeS8N 2012-04-16 14:26:36

+0

对我来说最重要的是访问时间,大部分时间操作只是查找和读取文件 – 2012-04-16 14:29:40

回答

0

在现代文件系统(如ext3,ntfs)中,如果打开单个文件,目录中的200K文件不会很慢。列表的速度会更慢,但是将文件分发到多个目录中并不会对您有所帮助。