【问题标题】:Best practice for implement a file-based cache实现基于文件的缓存的最佳实践
【发布时间】:2012-04-16 14:13:38
【问题描述】:

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

我的问题是:将文件保存在单独的文件夹中对性能有好处吗?这样可以减少 IO 时间吗?

【问题讨论】:

  • 它只是让列表变慢,访问时间不受影响。我见过的大多数文件缓存系统都对文件名的哈希使用基于树的方法。这大大减少了每个目录的文件数量。即文件bunny.txt (sha1 0d9228b316d694f2cb1a9add3fb71e29e55a060a) 将存储在0/d/9/0d9228b316d694f2cb1a9add3fb71e29e55a060a。树的深度可以根据您的需要进行调整。
  • 我们已经超越了Army.mil 的文件缓存,但是如果您查看任何页面上的 JS 和 CSS 文件,您可以看到我们是如何以几乎相同的方式组合它们的。看起来很像@Soohjun 提到的。
  • 对我来说最重要的是访问时间,大多数时候操作只是查找和读取文件
  • @JavierMarín 它不会加快访问时间,但它可以使处理缓存本身更容易。如果您想手动处理一个文件夹中的 200k 个文件,那将是一个问题。

标签: php caching io


【解决方案1】:

在现代文件系统(例如 ext3、ntfs)上,如果您打开单个文件,目录中的 200K 文件不会很慢。列出当然会慢一些,但是将文件分布在多个目录中对您没有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2011-04-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多