【发布时间】:2012-01-21 09:03:54
【问题描述】:
我正在制作一个 asp.net mvc 站点,该站点将有一个论坛来上传一些信息。我希望能够让它上传图像。但是我不确定是否应该将这些图像保存在数据库中或将它们保存到文件服务器。
我没有看到超过 200Kb 的图像(这可能非常高)。我认为平均值会低于 50kb。
那么用什么比较好呢?
【问题讨论】:
标签: sql-server asp.net-mvc-3 file-upload
我正在制作一个 asp.net mvc 站点,该站点将有一个论坛来上传一些信息。我希望能够让它上传图像。但是我不确定是否应该将这些图像保存在数据库中或将它们保存到文件服务器。
我没有看到超过 200Kb 的图像(这可能非常高)。我认为平均值会低于 50kb。
那么用什么比较好呢?
【问题讨论】:
标签: sql-server asp.net-mvc-3 file-upload
如果您不需要控制对这些图像的访问(即它们是公开的,而不是基于角色的),则将它们存储在服务器上并保留指向数据库中路径的链接。
使用 DB 解决方案的问题是您必须将它们流式传输出去。可能是对包含大量图片的论坛页面的性能拖累。
正如我常说的,当网络服务器可以做得更好时,为什么还要编写用于提供文件的代码?
【讨论】:
取决于你看重什么以及你用它们做什么:
数据库中的图像:
文件系统上的图像
我不认为有适用于所有情况的“最佳”方法 - 但话虽如此,如果它用于网站,那么文件系统对我来说似乎更有意义!
【讨论】:
我个人会选择将图像存储在服务器上,然后将每个图像的路径保存在表中。在性能方面它可以更好。
【讨论】:
几年前我开发了一个房地产应用程序,并选择将每个房产的图像存储在数据库中。表演太可怕了。然后我将其更改为将图像存储在文件系统中(这是一个相当长的操作)并且性能更快。
我会说您应该存储在数据库中的唯一项目是大型文本文档,因此它们可以用于 SQL Server 的全文搜索之类的东西。但是,我永远不会将图像存储在数据库中,尤其是在每页可能有多个图像的情况下。
将 URL 存储在数据库中,然后从文件系统中获取图像。
【讨论】:
我有一个基于流的高效解决方案示例,用于从 SQL Server 数据库存储和检索媒体:Download and Upload Images from SQL Server via ASP.NET MVC 和后续FILESTREAM MVC: Download and Upload images from SQL Server。
我还建议您阅读To BLOB or not to BLOB。
我的建议是,除非您有特殊原因,否则将媒体存储在文件系统中。 HHTTP 服务器在简单地流回文件方面非常有效。使用数据库的具体原因可能是访问控制、自包含备份-恢复或以数据库为中心的高可用性/灾难恢复解决方案。
请记住,最快的响应是浏览器从不询问时:) 在您的响应中使用 caching tags。
【讨论】: