最适合约250,000个图像的网页文件夹结构

我将有大约20万张图片作为我网站的一部分。 每个图像将被存储3次:全尺寸,缩略图,更大的缩略图。 全尺寸图像大约在50Kb到500Kb之间。

正常的技术:在VPS上的Linux,Apache,MySQL,PHP。

什么是最佳的方式来存储这些通过浏览器快速检索和显示?

我应该将所有内容存储在一个文件夹中吗 我应该存储全尺寸的图像在一个文件夹,在另一个缩略图等? 我应该将图像存储在1000个文件夹中,并且保留图像所在的文件夹的索引?

感谢您的任何build议。 伟业。

Solutions Collecting From Web of "最适合约250,000个图像的网页文件夹结构"

我会使用一个三层或四层深度的分割目录结构,将所有文件均匀地分散到多个目录中,以便于维护和快速访问。

怎么做? 有多种选择:

  • 取出图像名称的第一个字符
  • 以名字的散列的第一个字符
  • 以自拍摄日期1970年以来的最后秒数
  • 把数据库中的图像ID的最后一个字符(如果存在的话)

假设我们有IMG8993_full.jpg,IMG8993_thumb.jpg,IMG8993_smallthumb.jpg

那么我们可以有,例如:

/images/I/M/G/8/IMG8993: IMG8993_full.jpg IMG8993_thumb.jpg IMG8993_smallthumb.jpg 

除非你的用户打开一个打开的文件夹,其目录列出了你的图像,我不认为文件夹结构会显着增加或减少你的用户的检索速度。 正如其他人所说,确保索引打开。 但是,如果我是你,我会研究(或复制和粘贴)动态提供图像的服务,而不是直接将它们存储在Web文件结构中。 在PHP中查看使用LibGD – 应该在大多数LAMP服务器上预安装。

缺点:

  • 通过服务提供图像比提供直接链接慢一点
  • 如果您使用后端图像存储(如数据库),则可能会导致系统崩溃,并使所有图像暂时不可用

优点:

  • 通过将图像动态调整为缩略图,可以节省存储空间,并使维护更加轻松
  • 一般来说,处理器速度比存储空间便宜

使用URL重写,你甚至可以把丑陋的URL,如

 /imageserver.php?userID=12345imageId=67890&size=full 

变成更光滑,更透明的用户:

 /jeremyZX/images/myPhoto.jpg /jeremyZX/images/tn/myPhoto.jpg 

这将给出整个图像目录结构的外观,而它们确实存储在任何你想要的后端格式中。

取决于你如何索引他们,如何检索他们。

没有什么特别的将它们全部存储在单个文件夹中,但是难以管理。 如果按文件名存储它们,并且文件名是合理正态分布的,则可能希望子文件夹以名称的首字母等进行分隔。如果按照添加的日期进行索引,则可能需要按照。

据我所知,没有“更快”或“更慢”的方式来存储浏览器检索的图像。

无论你做什么,都要确保在文件系统上启用了目录索引(你应该选择一个支持它的文件系统 – 但它们都是)

在实践中,例如ext3,这不是一个问题,因为它在新系统上默认启用。 你可以通过使用tune2fs找到(阅读该男子)

有了这些类型的数字,你可能会或可能不会遇到你的服务器上设置的inode限制。 这可能是有问题的取决于谁控制那个盒子。

总的来说,我会想出一些方案把它们分成更易于管理的尺寸。 即使在一个大小的目录上运行ls也需要很长时间来对其进行排序和显示。