提供 70,000 个静态文件 (jpg) 的最佳方式?

Ahs*_*san 5 performance nginx web-server static-content

我需要使用 nginx 提供大约 70,000 个静态文件 (jpg)。我应该将它们全部转储到一个目录中,还是有更好(有效)的方法?由于文件名是数字,我考虑使用如下目录结构:

xxx/xxxx/xxx

操作系统为 CentOS 5.1

cas*_*cas 6

这实际上取决于您用来存储文件的文件系统。

当一个目录中有数千个文件时,某些文件系统(如 ext2 和较小程度上的 ext3)会非常慢,因此使用子目录是一个非常好的主意。

其他文件系统,如 XFS 或 reiserfs(*),在一个目录中有数千个文件时不会减慢速度,因此无论您有一个大目录还是许多较小的子目录都没有关系。

(*) reiserfs 有一些不错的功能,但它是一个实验性玩具,有过灾难性故障的历史。不要将它用于任何即使是非常重要的事情。

  • ReiserFS 真的是杀手级文件系统,嗯? (6认同)
  • 404 找不到尼娜 (3认同)
  • 呃,那个笑话现在真的老了。我听到它的前 50 次很有趣,第 300 次开始无人驾驶。 (3认同)
  • ReiserFS 几年来一直相当稳定。我已经在我的电脑上使用它好几年了,我从来没有遇到过问题。 (2认同)

kqu*_*inn 4

标杆、标杆、标杆!您可能会发现这两个选项之间没有显着差异,这意味着您最好将时间花在其他问题上。如果您进行基准测试并发现没有真正的差异,请选择更容易的方案 - 如果只有程序必须访问文件,那么什么是易于编码的,或者如果人们需要经常使用文件,则什么是易于人类使用的。

至于哪个更快,我相信目录查找时间与目录中文件数量的对数成正比。因此,嵌套结构的三个查找中的每一个都会比一次大查找更快,但所有三个查找的总和可能会更大。

但别相信我,我不知道我在做什么!在重要的时候衡量绩效

  • 您对于测量的需要是完全正确的,但您对于查找时间的看法是不正确的。它依赖于文件系统,许多文件系统在文件数量远低于 70k 时就开始表现出性能下降。 (4认同)