我想提出一个asp.net MVC的网站,将有一个论坛上传一些信息。我希望能够让它上传图片。但是我不确定是否应该将这些图像保存到数据库中或将它们保存到文件服务器。
我没有看到超过200Kb的图像(这可能非常高)。我认为平均会在50kb以下。
那么最好用什么?
我想提出一个asp.net MVC的网站,将有一个论坛上传一些信息。我希望能够让它上传图片。但是我不确定是否应该将这些图像保存到数据库中或将它们保存到文件服务器。
我没有看到超过200Kb的图像(这可能非常高)。我认为平均会在50kb以下。
那么最好用什么?
取决于你看重的是什么,什么你与他们这样做的:在一个数据库中
图片:
文件系统上的图像
我不认为在所有情况下都有一个“最佳”方法 - 但话虽如此,如果是为了网站,文件系统似乎对我更有意义!
就我个人而言,我会选择将图像存储在服务器上,然后将每个图像保存在表中。性能明智,它可以更好。
几年前,我开发了一个房地产应用程序,并选择将每个属性的图像存储在数据库中。表演很可怕。然后我改变它以将图像存储在文件系统中(这是一个相当长的操作来执行)并且性能要快得多。
我会说你应该在数据库中存储的唯一项目是大型文本文档,所以它们可以用于像SQL Server的全文搜索之类的东西。但是,我永远不会将图像存储在数据库中,尤其是在每页可能存在多个图像的情况下。
将URL存储在数据库中,然后从文件系统中获取图像。
如果您不需要控制对这些图像的访问(即,它们是公共的,而不是基于角色的),则将它们存储在服务器上并保留数据库中路径的链接。
去DB解决方案的问题是你必须流出它们。可能是一个有很多图像的论坛页面上的性能拖动。
正如我一直说的,为什么代码服务文件时,Web服务器可以做得更好?
+1你将得到好处(假设你将显示这些图像以及上传它们)缓存浏览器端的图像(并且你会发现从模型/视图模型获取图像到浏览器会产生大量的数据库行动)。 – 2011-12-15 17:24:09
我有一个基于流的高效解决方案,用于存储和检索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您的回应。
我在5年前开发了一个CMS,我们在积极的意义上发现了perforamnce terrifivc。所以 - 确定它不是不知道如何有效地处理数据库中的二进制数据? – TomTom 2011-12-15 17:23:07