【问题标题】:How should I store the images for my website?我应该如何为我的网站存储图像?
【发布时间】:2013-06-15 08:54:01
【问题描述】:

在数据库中存储图像文件的正确方法是什么。 我正在使用文件路径来存储图像。

但问题就在这里。我基本上必须为我的网站显示 3 种不同尺寸的一张图片。一个用作缩略图,第二个大约为 290px*240px,第三个将是全尺寸(大约 500px*500px)。由于使用 HTML img 元素缩小图像并不被认为是好的,那么应该如何解决呢?

目前,我正在为一件事存储 3 个不同尺寸的图像。有没有更好的办法?

【问题讨论】:

  • 只保留数据库中的原始图像路径。其他尺寸应根据原始尺寸动态创建。这解决方案
  • 使用服务器端脚本
  • 您唯一的选择是在运行时计算图像,或者将不同尺寸存储在某处。如果您每次都计算它们,您可能会为您的用户减慢速度。如果您存储它们,如果您决定将来更改图像大小,您将遇到问题。您必须决定哪些可能性更适合您的特定应用。
  • “更好”是主观的。如果您没有空间问题,您当前的解决方案就可以了。如果这样做,请购买更多空间。只是永远不要将图像存储在 MySQL 中。您也可以随时压缩图像

标签: html image


【解决方案1】:

坦率地说,将图像存储在数据库中的正确方法不是将它们存储在数据库中。将它们存储在文件系统中,并将数据库限制在路径中。

归根结底,您说的是存储空间。这才是真正的问题。如果您以不同的分辨率存储同一文件的多个副本,则将比仅存储文件的单个副本占用更多空间。

另一方面,如果您只保留文件的一个副本并动态扩展它,则不需要存储空间,但它确实需要更多的处理能力。

正如您在问题中已经说过的那样,每次发送全尺寸图像在带宽方面都是昂贵的。

这就是权衡;服务器上的存储空间与处理器工作与带宽成本。

简单的事实是,这三样东西中最便宜的是存储空间。因此,您应该将文件的多个副本存储在您的服务器上。

这也是可以为您提供最佳性能的解决方案,这在许多方面比直接成本更重要。

在存储文件路径方面,我的建议是为缩放版本提供与原始文件相比具有标准前缀或后缀的可预测名称。这意味着您只需要在数据库上拥有单个文件名;您可以简单地为已请求的图像的相关版本添加前缀。

【讨论】:

  • 我已经在关注您在回答中所说的一切。只是有点困惑我是否做对了。完美的答案。爱它。谢谢;)
  • @Spudley 在数据库中存储多个图像有什么问题?为什么要立即驳回它?我可以看到的优势之一是维护。对于存储在文件系统中的图像,您需要为 fs 和数据库制定备份策略。如果您将它们存储在数据库中,那么您只需要一个备份策略。
  • @nurdglaw:相信我,我使用过很多系统,人们认为将图像放入数据库是个好主意。事实证明,在每一个案例中,这都是一个巨大的错误。它给系统增加了很多复杂性,并且总是有很大的性能开销(无论你的数据库和服务器端代码有多快,它们永远不会像直接读取文件系统那样快;通常它是一个慢很多)。在某些情况下它是合理的,但它们很少而且相差甚远,并且通常仅适用于您在提供图像时对图像进行动态修改的情况。
  • @Spudley 好的,感谢您详细说明。我很惊讶,但会接受 经验之声 - 我没有 :-)
  • @nurdglaw - 值得一读:stackoverflow.com/questions/3748/…
【解决方案2】:

存储同一张图片的多个版本没有错。

理想情况下,您想要更多 - 用于视网膜屏幕的 @2x。

您可以使用服务器端脚本动态生成较小的脚本,但根据流量水平,这可能不是一个好主意。

您实际上是在用存储空间和速度换取更高的 CPU 和 RAM 使用率来动态生成它们——这取决于您的情况,这可能是一个很好的权衡,也可能不是。

【讨论】:

  • 我的网站将有大约 700-800 个图像。700*3 = 2100 个图像文件。
  • @NavneetSaini 那么,区别在哪里?
  • @neoascetic 你是什么意思?
  • 2100 并不是一个很大的数字。将它们存储为 80% 质量的 jpeg 可能不是一个大问题。如果是,则动态创建它们。
【解决方案3】:

同意 rick ,您可以根据业务需求存储多种尺寸的图片。您应该将图像存储在服务器上的文件夹中,并将其位置存储在数据库中。在文件夹中创建层次结构并将低分辨率图像存储在文件夹中,以便您始终可以仅使用一个地址来引用它们。 你可以在你的web.config中这样做

<add key="WebResources" value="~/Assets/WebResources/" />
<add key="ImageRoot" value="Images\Web" />

制作 .233240 和 .540540 文件夹并将这些同名图片存储在其中,以便您轻松访问它们。

【讨论】:

    猜你喜欢
    • 2012-07-09
    • 2013-11-21
    • 2010-10-10
    • 1970-01-01
    • 2012-05-15
    • 2017-07-23
    • 2018-06-09
    • 1970-01-01
    • 2014-04-19
    相关资源
    最近更新 更多