为啥将图像(网址)存储在数据库中 [网站]

Posted

技术标签:

【中文标题】为啥将图像(网址)存储在数据库中 [网站]【英文标题】:why storing image (urls) in a database [website]为什么将图像(网址)存储在数据库中 [网站] 【发布时间】:2011-11-21 08:27:56 【问题描述】:

与直接从脚本链接到图像相比,在数据库中存储图像或图像路径有什么优势?

编辑:由于您不必为网页中的每张图片都进行数据库查找,因此在脚本中硬编码网址是否也更快?

【问题讨论】:

Storing Images in DB - Yea or Nay? 的可能重复项 【参考方案1】:

不可能回答这样一个模糊的问题。

你在说什么图片?设计图像?照片库图像?头像图片?这都是不同的情况,每个都有自己的解决方案。将图像名称存储在数据库中只会对这三种情况中的一种有任何好处,因为在图库中对图像进行分组、排列和链接会更容易。而对于其他情况,将图像名称存储在数据库中并没有一个单一的理由。

无论如何,它都只适用于图像名称。因为没有单一的理由在图像名称旁边存储任何 URL 或路径。 Url 应该是基于某些规则的计算,而不是硬编码的。

【讨论】:

我不认为这是一个模糊的问题。我不问将图像存储在数据库中是否更好,我只是在寻求优势。这个问题的所有答案,包括你自己的,都以一种或多种方式正确回答了我的问题,所以显然我的问题已经足够清楚了。 在没有实际问题的情况下要求优势会导致您出错。绝对。 我同意你的看法。但这目前并不适用于任何实际应用。我已经读过很多次了,我只是想知道有什么好处。【参考方案2】:

我通常不会对基本站点图像执行此操作,但绝对优势可能是出于可扩展性目的。如果图像要显示在不同的脚本中,它们都可以引用数据库,因此您只需在一个地方更改 url。

【讨论】:

但是在那种情况下你不能替换文件系统中的图像吗?比你也只需要改变一件事。 当然,它必须被命名为相同的东西。如果您有一个 SQL 行 LogoImage 等于“default_logo.png”,并且您想在圣诞节更改它,例如 Google 所做的那样。无需删除或覆盖当前徽标(名称相同),您只需将 LogoImage 更改为“christmas_logo.png”【参考方案3】:

因为您可以稍后动态更改路径,或者能够操作它们,否则您的“脚本”将不得不随处更新(想象一下您的脚本会变得很大)。

数据库使数据管理更容易,并且消除了脚本示例中的硬编码。

硬编码从来都不是好事。

编辑

我刚刚注意到您说“存储图像”我不会将图像存储在数据库中,将它们安全地用于文件系统并参考您在问题中所述的路径。

【讨论】:

但是通常当您只更改网页中的图像时,您也可以替换文件系统中的图像。如果您不只是更改图像,则可能无论如何都必须编辑源代码。 您说使用数据库可以稍后更改图像的路径。我认为您可能想要这样做有两个原因:您只是想更改图像,或者您正在对您的网站进行某种改造。在第一种情况下,您也可以将原始图像替换为新图像(就像更改数据库中的 url 一样简单),在第二种情况下,您已经必须编辑源代码,所以您也可以努力编辑用它编码的网址。可能我在这里仍然遗漏了一些东西,我“感觉”将 url 存储在数据库中更好,但我仍然不明白为什么。 @Tiddo,您正在考虑小规模,如果您的网站增长,我试图解释大规模存储。如果您使用数据库来存储 3-5 个图像 url,那么是的,它毫无意义,但是如果您要使用 100 或 10,000 个图像,以这种方式管理/存储非常有意义。 好的,谢谢!这可能就是我看不到优势的原因:我完全没有大型网站的经验。所以可能对我正在构建的网站毫无意义。 这不是毫无意义的,它的良好做法和正确的做法。

以上是关于为啥将图像(网址)存储在数据库中 [网站]的主要内容,如果未能解决你的问题,请参考以下文章

将存储在数据库中的 BLOB 转换为 HTML 网站上的图像

Laravel 5:将图像网址作为数组插入列

如何将图像动态存储在文件系统中?

在网站上存储每个用户的图片(php)

将图像保存在 iOS 相册(我的文件夹)中并存储图像 url

为啥在 PIL(low) 中读取图像会破坏 Flask 图像端点?