CMS的图像管理方法

本文关键字:管理方 方法 管理 图像 CMS | 更新日期: 2023-09-27 18:25:49

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

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

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

那么,哪种方法是最佳和优化的?或者给我其他比这两种更好的方法。

CMS的图像管理方法

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

第三种但不太优选的选择是将实际图像保存为数据库中的blob,或者更糟的是保存为base64编码的字符串。这需要保存mime类型,并使用数据uri或web服务将图像作为二进制内容提供。(这不是一个好主意,它给你的数据库增加了很多不可索引的开销,尽管你可能有一个极端的用例,这似乎是个好主意。如果你要在api调用中为一个移动应用程序提供资产和记录,这可能会很有用,但即使这样也不总是一个好想法。

AmazonS3现在是黄金标准-它可以轻松扩展,并保持应用程序文件系统和数据库的精简。NTFS不能很好地扩展超过10万个文件,IIS和ASP.NET也不能很好的处理超过400个文件夹,尤其是在SAN上。

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

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

与此相关的是,您是否使用单源成像?CloudFront非常便宜,并且只需要大约五分钟就可以使用imageresizing.net库进行设置。然后你可以请求这样的图像:

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

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