【问题标题】:Retrieving images - MySQL based or file system based, which one is faster?检索图像 - 基于 MySQL 或基于文件系统,哪个更快?
【发布时间】:2011-05-28 18:43:16
【问题描述】:

我想知道通过从数据库中获取路径/文件名以及其余数据来检索特定产品或博客文章或网站中任何内容的图像是否更快/更好,或者例如,如果我应该使用产品 ID 创建一个文件夹并使用 glob 对其进行迭代,或者仅在单个图像的情况下使用 id 作为文件名。

这些方法的优点/缺点是什么?

【问题讨论】:

  • 你已经知道了一切,第二种方法更容易实现,第一种更灵活。只有你自己才能判断什么最适合你。至于操作的“速度” - 它是 E.Q.U.A.L
  • Saving images in database mysql 的可能重复项
  • ajreal - 不是真的。我不是在问我是否应该将文件本身存储在数据库中。
  • @Col。弹片 - 谢谢。你能解释一下第一种方法在哪些方面更灵活吗?我有一个坏习惯,就是看不到这些东西,以后会被搞砸。
  • 我的错,但无法撤消

标签: php mysql


【解决方案1】:

使用路径/名称方法肯定更快(- 1 次数据库调用;编写字符串不是耗时/内存消耗的操作)。顺便说一句,如果您对相同的产品 ID 有不同的图像,您可以创建一个 foreach 循环,在给定文件夹中查找 pic1.png、pic2.png [...] picn.png。

但是有一个问题:更改图像将成为一个更复杂的过程 - 而不是仅上传新图像并更新数据库,您必须在上传之前删除带有相关缩略图的上一个(或上一个集合)(如果有的话)新的;这也意味着除非您将旧的图像存储在备份目录等中,否则图像更改过程将不可逆。

那么,(您打算经常更改它们 || 您的用户会经常更改它们)?数据库:路径

【讨论】:

  • 请注意:它绝对更快并不意味着它非常,甚至可以感知,更快。
  • 即使你叫一个文件名along with the rest of the data?
  • 我不确定我明白了。我在想类似的东西:回显"<img src='".$path_to_images."/"."$item_id."/image.png' />",并且由于已经分配了 $item_id var,我看不出执行时间或内存会受到怎样的影响。另外,我假设您只需要显示图像。
  • 好吧,考虑到图像的多对一关系,您必须将数据表与图像表连接起来......我想只使用文件系统会更快。跨度>
  • 不过,我还是希望 Shrapnel 上校解释一下他的评论 - 我对 php 内部原理一无所知,而且他看起来更像是一个专家。
【解决方案2】:

图片..

  1. 想象它们在数据库中。
  2. 想象一下自己缓存它们以提高性能。
  3. 假设您将它们放在一个文件中以便缓存它们。

叮叮叮。硬盘上的文件中的图像。

【讨论】:

    【解决方案3】:

    使用包含实际图像文件路径的数据库记录存储图像允许您做更多事情,例如在数据库中存储替代文本列或任何其他有用的信息。您当然需要围绕这个想法创建一个良好的内容管理系统,以便能够快速轻松地更改已上传的图像。

    我通常为我的所有图像保留一个表,其中包含 id、文件名、alt_text、宽度和高度,然后在我可能需要附加图像的所有其他表中引用该表。我还存储了一些额外的东西,比如调整大小方法信息,这样下次他们为同一个字段上传图像时,你可以为他们需要输入的任何调整大小信息自动抓取并设置默认值。

    您可能还想存储图像的对齐方式,尽管我通常将其放入链接到图像表的表中。这允许您对其进行设置,以便用户可以轻松地在网站的其他区域重复使用已上传的图像,而无需上传该图像的第二个副本。

    【讨论】:

      猜你喜欢
      • 2011-03-10
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2019-04-30
      • 2015-03-29
      • 2011-04-02
      • 2013-05-05
      • 2011-10-07
      相关资源
      最近更新 更多