2010-01-15 86 views
2

我正在设计一个原型应用程序来存储图像,类似于facebook。这将是一个面向公众的网站,我不确定会有多少用户,但是我正在寻找的是一种有效检索它们的方法。使用MVC和Sql服务器存储和检索图像

到目前为止,我正在考虑将它们存储在SQL Server varbinary列中。这是一个好主意吗?我有上传代码和存储代码。我关心的是检索它们。我可以随时取消并构建图像标签,但我担心必须为每个数据库创建数据库。

我一直在考虑为用户获取所有图像并将它们缓存在asp.net缓存中10到30秒。我从来不需要做这样的事情,所以我会有兴趣听到几种不同的方法。很明显,图像的大小可能会有所不同,我正在考虑定义大小限制,但我还没有得到那么多。

感谢您的帮助。 Paul Speranza

回答

2

我认为IIS在缓存静态内容方面已经做得非常好,所以我可能会将这些图像保存到磁盘上并保存它们在数据库中的位置信息。

+0

我同意。将Uri存储在数据库和磁盘上的文件中。如果您的网站增长,那么可以将物理文件移动到SAN。 – Junto 2010-01-15 13:13:43

+0

谢谢你的评论。由于我从来没有使用SAN,我的下一个问题是,即使使用SAN将在另一台设备上有文件,它会比去数据库更高效吗? – 2010-01-15 14:22:07

0

首先,您可以在将图像放入sql server之前重新调整图像大小。 此外,你可以使一个http处理程序从sql server检索图像,但我会设置缓存为一两分钟,而不是更少。他们没有改变那么多。

context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10)); 

另一种选择是存储在文件服务器上,你可以写这些文件的任何地方IIS具有的权限,并且该文件“URL”存储,如“C:\影像\ test.jpg放在”在数据库中。但是,那么当记录被删除时,你必须写一些东西来删除文件。

2

不要将图像存储在数据库中。它会伤害你的数据库和你的网站的性能。

唯一的例外是,如果你打算使用SQL 2008的FILESTREAM类型,它基本上使用文件系统来存储文件,并在数据库中保存对它的引用。

绝对不会将原始图像数据存储在varbinary列中。

相关问题