将图像文件存储在数据库中的正确方法是什么。 我正在使用文件路径来存储图像。
但问题出在这里。我必须为我的网站显示3个不同大小的一个图像。一个用作缩略图,第二个用于290px * 240px,第三个用于全尺寸(约500px * 500px)。由于使用HTML img
元素缩小图像并不合适,那么它的解决方案应该是什么呢?
目前,我正在做的是为一件事存储3个不同尺寸的图像。还有更好的办法吗?
答案 0 :(得分:5)
存储同一图像的多个版本没有错。
理想情况下,您需要更多 - 视网膜屏幕的@ 2x。
您可以使用服务器端脚本动态生成较小的脚本,但根据流量级别,这可能是一个坏主意。
你真的在交换存储空间和速度以获得更高的CPU和RAM使用率来动态生成它们 - 这取决于你的情况可能是一个很好的权衡,或者可能不是。
答案 1 :(得分:3)
坦率地说,在数据库中存储图像的正确方法是不将它们存储在数据库中。将它们存储在文件系统中,并将数据库限制在路径中。
在一天结束时,你谈论的是存储空间。这是真正的问题。如果您以不同的分辨率存储同一文件的多个副本,则只需存储该文件的单个副本将占用更多空间。
另一方面,如果您只保留文件的一个副本并动态缩放,则不需要存储空间,但确实需要更多处理能力。
正如您在问题中所述,每次发送全尺寸图像在带宽方面都是昂贵的。
这就是权衡;服务器上的存储空间与处理器工作量和带宽成本。
简单的事实是,这三件事中最便宜的是存储空间。因此,您应该将多个文件副本存储在服务器上。
这也是一种能够为您提供最佳性能的解决方案,在许多方面,它比直接成本更重要。
在存储文件路径方面,我的建议是为扩展版本提供可预测的名称,其标准前缀或后缀与原始文件相比较。这意味着您只需要在数据库上拥有单个文件名;您只需为已请求的图像的相关版本添加前缀即可。
答案 2 :(得分:1)
同意rick,您可以根据业务需求存储多个大小的图片。您应该将Image存储在服务器上的文件夹中,并将其位置存储在数据库中。在文件夹中创建层次结构并在文件夹中存储低分辨率图像,这样您始终只能使用一个地址来引用它们。
您可以在web.config
<add key="WebResources" value="~/Assets/WebResources/" />
<add key="ImageRoot" value="Images\Web" />
制作.233240和.540540文件夹,并在其中存储具有相同名称的图片,以便您轻松访问它们。