0

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

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

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

4

3 回答 3

7

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

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

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

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

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

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

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

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

于 2013-06-15T09:04:11.573 回答
5

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

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

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

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

于 2013-06-15T08:58:01.977 回答
1

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

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

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

于 2013-06-15T09:11:06.557 回答