结构WordPress的上传目录来处理大量的文件

这是一个快速发布有关组织WordPress的上传目录,可湿性粉剂内容/上传,对于大量使用文件名衍生目录结构的文件。

这是2018年有一个目录中的文件太多可以为许多工具和标准操作,如目录列表还疼性能。它没有帮助,因为文件系统理论上能够支持18.4百万的三次方(2⁶⁴)每个目录时,你不能做任何与这些文件的实际文件。

需要响应的图像(即通过对访问者的屏幕尺寸图像文件)也能够通过创造很多不同的缩放复印文件的每个上传的图像文件放大的问题。

WordPress的核心报价只有一个选项,可以帮助减少存储在其默认的文件上传目录中的文件的数量。该选项被称为“整理我上传到为期一个月和一年为基础的文件夹”,有助于将文件放置到基于年份和月份的图像上传子目录减小具有文件夹的大量的可能性。你得到一个目录每年为十二个月,然后为该月事事顺心到一个目录。

这种方法对于大多数应用正常,但也有一些缺点:

  • 如果您上传每月图像百它不能很好地扩展(×响应图像尺寸数)
  • 它把在上传文件的网址中的日期可能看的地方了,当你重复使用的新的内容旧图像

有100万不同的方法这方面的问题。我选择了从获得每次上传的文件名的短哈希,和工作有它的十六进制表示(0-9,A-F)。我用了两个第一字符从散列得到的256(16²)可能的目录中的第一级,而接下来的两个字符再弄256个可能的子目录。

这给了我65 536(16⁴)可能的目录,其中上传的文件可以存储在每个只含有少量文件的。在这个层次中的第三级将产生16 777 216(16⁶)可能的目录,但是这是相当多的,比我需要的。

里面每个目录中我创建了一个文件命名的目录,并把文件及其所有响应图像尺寸将其打包在一个地方。这是更快地删除一个目录不是每个单独的文件,再加上它使所有代表很好地捆绑在一起相同的图像文件。

随着哈希算法的合理选择,这应该均匀地分布在所有分配文件可能的目录。Another benefit is that since the hash only depends on the file name, the same image will always end up in the same directory — even if the date ticks over into a new year while processing or uploading.

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

我还没有为这篇文章在这个具体做法任何示例代码,因为我不相信这将是为别人有用的直接。您可以通过挂钩到实现自定义上传的目录结构wp_handle_upload_prefilterwp_handle_uploadupload_dir由WordPress核心提供的过滤器。添加您upload_dir滤波器响应于所述wp_handle_upload_prefilter过滤器,然后删除您的过滤器wp_handle_upload。请记住,您还必须创建任何新的子目录,你拿出你的内upload_dir过滤功能。