将图像存储在Db或服务器上?

时间:2011-12-15 17:12:46

标签: sql-server asp.net-mvc-3 file-upload

  

可能重复:
  Storing Images in DB - Yea or Nay?

我正在创建一个asp.net mvc网站,该网站将有一个论坛来上传一些信息。我希望能够上传图片。但是我不确定是否应该将这些图像保存在数据库中或将它们保存到文件服务器中。

我没有看到图像超过200Kb(这可能非常高)。我认为平均值将低于50kb。

那么最好使用什么?

5 个答案:

答案 0 :(得分:5)

如果您不需要控制对这些图像的访问(即它们是公共的,而不是基于角色的),则将它们存储在服务器上并保留指向数据库中路径的链接。

寻找数据库解决方案的问题是你必须将它们流出来。可能会在包含大量图片的论坛页面上拖累性能。

正如我经常说的那样,为什么在网络服务器可以做得更好的时候提供服务文件的代码?

答案 1 :(得分:3)

我个人会选择将图像存储在服务器上,然后在表格中保存每个图像的路径。性能方面它可以更好。

答案 2 :(得分:3)

取决于您的价值以及您正在做的事情:

数据库中的图片:

  • 使用关联数据生存,数据迁移到其他系统时不会出现脱离的可能性
  • 更容易备份(因为它们都是数据库)
  • 更安全,更难以意外或故意操纵

文件系统上的图像

  • 节省数据库服务器存储空间 - 如果你在的话,可能很重要 共享环境支付数据库空间
  • 更容易在代码中检索
  • 更容易在html中引用

我不认为对所有情况都有“最好的”方法 - 但是如果说它是一个网站,那么文件系统对我来说似乎更有意义!

答案 3 :(得分:1)

几年前我开发了一个房地产应用程序,并选择在数据库中存储每个属性的图像。表演太恐怖了。然后我将其更改为在文件系统中存储图像(这是一个非常长的操作)并且性能要快得多。

我想说你应该在数据库中存储的唯一项目是大型文本文档,因此它们可以用于SQL Server的全文搜索。但是,我永远不会在数据库中存储图像,特别是如果每​​页可能存在多个图像。

将URL存储在数据库中,然后从文件系统中获取图像。

答案 4 :(得分:1)

我有一个基于流的高效解决方案的示例,用于存储和检索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服务器在简单地流式传输文件方面非常有效。使用数据库的具体原因可能是访问控制,自包含备份恢复或以数据库为中心的高可用性/灾难恢复解决方案。

请记住,最快的响应是浏览器永远不会要求:)在您的回复中使用c aching tags