单个目录中的许多文件会导致Apache下的加载时间更长吗?

时间:2017-04-18 15:52:26

标签: php apache unix

即使似乎存在一些重复的问题,我认为这个问题是独一无二的。我不是在问是否有任何限制,只是关于Apache的上下文中的性能缺陷。或者unix文件系统。

让我们说如果我从Apache服务器请求文件

http://example.com/media/example.jpg

同一目录“media”中有多少个文件是否重要?

我问的原因是我的PHP应用程序动态生成图像。

创建后,它会将其放在PHP脚本因ModRewrite而触发的相同位置。如果该文件存在,Apache将跳过整个PHP执行并直接提供静态图像。如果您想以这种方式调用它,可以使用某种网关缓存。

Apache基本上有两件事要做:

  1. 检查文件是否存在
  2. 提供文件或将请求转发给PHP
  3. 到目前为止,我在这个目录中有大约25.000个大约8 GB的文件。我希望它在未来几年至少增长10倍。

    虽然我没有遇到任何管理这些文件的问题,但我有一种轻微的感觉,当它通过HTTP请求时它会变慢。所以我想知道这是真的发生了什么,还是只是我的主观印象。

1 个答案:

答案 0 :(得分:0)

由于多个间接级别,大多数基于Berkeley FFS的文件系统会因一个目录中的大量文件而降低性能。

我不知道其他文件系统,如HFS或NTFS,但我怀疑他们可能会遇到同样的问题。

我曾经不得不处理类似的问题,最后使用了地图来处理文件。

我认为这就像md5 myfilename-00001屈服(例如):e5948ba174d28e80886a48336dcdf4a4然后我将其放入名为e5/94/8ba174d28e80886a48336dcdf4a4的文件中。然后映射文件将'myfilename-00001'映射到'e5 / 94 / 8ba174d28e80886a48336dcdf4a4'。这个不太优雅的解决方案适用于我的目的,它只需要一些代码。