【问题标题】:User uploads folder structure用户上传文件夹结构
【发布时间】:2013-10-06 19:07:44
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

  • 您期望有多少用户?您可能会遇到文件\目录限制
  • @Dagon 啊,是的!你是对的。从来没想过!我正在为一个客户构建这个项目,他将在网站营销上花费大量资金,因此它必须具有一定的可扩展性。这个怎么样;公开 - 照片 - 相册 - 相册 ID

标签: php directory structure


【解决方案1】:

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

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


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

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

  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. 有关文件的信息存储在数据库中,因此易于分类、分组等。

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

【讨论】:

  • @Dagon 现在更好了吗?
  • @Dragon Care 解释原因?
  • 如果路径和文件名需要对 SEO 友好?
猜你喜欢
  • 2012-05-03
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 2014-01-17
  • 1970-01-01
  • 2011-06-08
  • 2021-09-19
相关资源
最近更新 更多