CMS的图像管理方法

时间:2012-02-25 04:39:28

标签: c# asp.net image sql-server-2008 content-management-system

我正在使用ASP.Net,C#和SQL server 2008进行CMS实施。对于图像管理,我手头有两种方法。

1]将图像存储在文件夹中,并通过准备包含图像路径和名称的数据集来读取它们。 (这里我无法动态管理备用文本,因为我只能获得路径和图像名称)

2]将图像存储在文件夹中,以及表格中的所有属性(Id,Name,Path,Alternate Text等)。

那么,哪种方法最佳且优化?或者给我任何比这两个更好的方法。

2 个答案:

答案 0 :(得分:2)

#2它基本上是存储图像的黄金标准。

第三个但不太优选的选项是将实际图像保存为blob,或者更糟糕的是将数据库中的base64编码字符串保存。这需要您保存mime类型,并使用data-uri或Web服务将图像作为二进制内容提供。 (这不是一个好主意,它为你的数据库添加了很多不可索引的开销,虽然你可能有一个极端的用例,这似乎是一个好主意。如果你正在追溯一个移动应用程序它会很有用你希望在api电话中提供资产以及你的记录,但即使这样,它也不总是一个好主意。

答案 1 :(得分:1)

亚马逊S3现在是黄金标准 - 它可以轻松扩展并保持您的应用文件系统和数据库苗条。 NTFS不能很好地扩展超过100K的文件,IIS和ASP.NET不能很好地处理400多个文件夹,特别是在SAN上。

@j_mcnally 微软的官方立场是避免将图像放入数据库。它速度快,但比NTFS慢,并且像疯了一样使用RAM,并且阻止了IIS的高效缓存和文件流。

使用MS SQL或键值存储来保存S3图像URL,但在S3上存储实际数据有很多优点 - 几乎无限的可扩展性,便宜的带宽成本,并且您的ASP.NET服务器可以专注于存在响应而不是陷入静态文件。

相关说明,您使用的是单源影像吗? CloudFront非常便宜,只需five minutes to get it set up with the imageresizing.net library。然后你可以要求这样的图像:

http://images.mysite.com/folder/image.jpg;width=300;height=300;mode=crop

将从S3检索主映像,在.NET服务器上调整大小,并由CloudFront进行边缘缓存。快速,高效,便宜。最重要的是,敏捷。