2012-04-16 36 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文件不會很慢。列表的速度會更慢,但是將文件分發到多個目錄中並不會對您有所幫助。