4

随着网站的发展,用户上传的文件夹结构会对性能产生任何影响吗?

例如,我考虑了这种存储照片/相册的结构:

Public folder
└── Uploads
    └── Users
        └── User ID
            └── Album ID - contains all photos in the album

提前致谢!

4

1 回答 1

13

随着网站的发展,用户上传的文件夹结构会对性能产生任何影响吗?

是的,它可以。如果您将太多文件存储在单个目录中,则可能会减慢操作速度。发布结构非常好。


编辑也许我要快速回答上面的答案并且缺少一些解释,所以下面我扩展它:

如果您希望拥有来自用户的数万张图片,您应该考虑以下解决方案:

  1. 在您的数据库中创建表并将有关每张照片的信息放入其中。从记录 id md5 哈希创建照片文件名。

    数据库表示例:

    +-------------------------------------------------- ----------------+
    | id 文件名 ext created_at user_id |
    +-------------------------------------------------- ----------------+
    | 1 c4ca4238a0b923820dcc509a6f75849b jpg 1381127206 1 |
    | 2 c81e728d9d4c2f636f067f89cc14862c jpg 1381123406 2 |
    | .. .. .. .. |
    +-------------------------------------------------- ----------------+
    
  2. 现在拆分 md5 哈希并从第一个(比如说 6 个字母)创建目录结构:

    上传/
      用户/
          相片/
              c4/
                  钙/
                      42/
                          c4ca4238a0b923820dcc509a6f75849b.jpg
              c8/
                  1e/
                      72/
                          c81e728d9d4c2f636f067f89cc14862c.jpg
    

优点:

  1. 您没有向用户公开目录结构。
  2. 通过文件名很容易找到文件。
  3. 有关文件的信息存储在数据库中,因此很容易排序、分组等。

还要确保在文件系统上启用目录索引(在较新的系统上默认启用)。

于 2013-10-06T19:55:16.973 回答