构建wordpress的上传目录以处理大量文件

这是一篇关于组织WordPress上传目录的快速文章,wp内容/上传,对于大量使用文件名派生目录结构的文件。

到了2018年,一个目录中的文件太多,仍然会影响许多工具和标准操作(如目录列表)的性能。理论上,当您不能对这些文件做任何实际操作时,文件系统能够支持每个目录18,4 Quintillion(2_)文件,这并没有帮助。

对响应图像的需求(采用访客屏幕大小的图像文件)也通过为每个上传的图像文件创建大量不同比例的副本文件来放大问题。

WordPress核心提供了一个选项,可以帮助减少默认文件上传目录中存储的文件数量。该选项被称为“将我的上载组织到基于月份和年份的文件夹中”,并通过根据上载图像的年份和月份将文件放入子目录,帮助减少拥有大量文件夹的可能性。你每年都有一个目录,十二个月,然后那个月的所有内容都会被放到一个目录中。

这种方法在大多数情况下都可以使用,但有一些缺点:

  • 如果你每月上传上百张图片,它的缩放效果就不好(×响应图片大小的数目)
  • 它会在上载文件的URL中放置一个日期,当您将旧图像重新用于新内容时,该日期可能会显得不合适。

这个问题有无数种不同的解决方法。我选择从每次上传的文件名中得到一个简短的哈希,并使用它的十六进制表示(0-9,α-F)。我使用哈希中的前两个字符来获取256(16平方)个可能目录的第一级,接下来的两个字符将得到另外256个可能的子目录。这给了我65 536(16_)可能的目录,其中上传的文件可以存储,每个将只包含少量的文件。此层次结构中的第三个级别将创建16 777 216(16_)个可能的目录,但这比我需要的要多得多。

在这些目录中的每一个目录中,我都创建了一个以文件命名的目录,并将该文件及其所有响应映像大小放在一个地方进行捆绑。删除一个目录比删除每个单独的文件要快,此外,它还将表示同一图像的所有文件很好地捆绑在一起。

通过合理选择散列算法,这应该将文件均匀地分布在所有可能的目录上。另一个好处是,由于散列值只取决于文件名,相同的图像总是会出现在同一个目录中——即使在处理或上传时日期已经过了一年。

这类似于您将看到的由磁盘存储支持的HTTP缓存服务器使用的方法。

在本文中,我没有包含任何针对这种特定方法的示例代码,因为我不认为它会直接对其他任何人有用。您可以通过连接到wp_处理上传预滤器wp_处理上传,和上传文件WordPress核心提供的过滤器。加上你的上传文件过滤以响应wp_处理上传预滤器过滤,然后在wp_处理上传.记住,您还必须在“代码>上传目录”中创建任何新的子目录。过滤功能。