选择目录以保存电子商务商店中的项目图像

Chosing directory to save item images in e-commerce shop

我经常看到人们在构建像电子商务网店这样的东西时会这样处理图片:他们将商品图片放在文件夹 pictures/xxxx/picture_name.jpg 中,其中 xxxx 是我们商品的 ID。

但现在我只是将图片保存到 pictures 没有子文件夹的文件夹中。 我的网上商店总共将有近 10 000 件商品。所以我想知道将图像放在单独的文件夹中是否真的会提高我网站的性能?

我正在使用 Rails。但这是与某些语言或框架并不真正相关的问题。我知道我可以测试它,但我还没有 10 000 个项目,所以我真的不能说性能会不会改变。

具有 pictures/xxxx/picture_name.jpg 这样的文件夹结构不会使 显示 图像更快。但是,随着系统的增长,手动查找图像会容易得多——因此您的数据更容易维护。

定义文件夹结构非常简单。例如,如果您使用 CarrierWave in your Rails application then defining a custom folder structure 只是重载一种方法的问题。 例如,这是您可能希望使用的通用文件夹结构:

  def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
  end

但是,并非您系统中的所有文件都会通过该接口上传。通读 asset pipeline 上的 Rails 教程;了解 app/assetsvendor/assetspublic/ 文件夹之间的用法差异。正确理解和使用这里的框架大大提高应用程序性能。

So I wonder will putting images in separate folders increasy performance of my website or not really?

这取决于文件系统。如果您关闭 dir_index 选项并且那里有数千个文件,它肯定会减慢按名称在 ext2/3/4 中搜索文件的速度。

尽管使用现代文件系统,将数十万个文件放在一个目录中可能没有问题,但这会增加此类解决方案的维护成本。如果您需要手工制作一些东西,您将无法使用简单的 ls 查看您的文件夹中有什么。像 mc 这样的工具在显示文件夹中的文件排序列表时可能会受到一些限制。

换句话说,在大多数情况下可以将所有图片存储在一个文件夹中,但这是不切实际的。