【问题标题】:Image management approaches for CMSCMS 的图像管理方法
【发布时间】:2012-02-25 04:39:27
【问题描述】:

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

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

2] 将图像存储在文件夹中,并将所有属性存储在表中(ID、名称、路径、替代文本等)。

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

【问题讨论】:

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


    【解决方案1】:

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

    第三个但不太受欢迎的选项是将实际图像保存为 blob,甚至更糟糕的是数据库中的 base64 编码字符串。这需要您保存 mime 类型并使用 data-uri 或 Web 服务将图像作为二进制内容返回。 (这不是一个好主意,它为您的数据库增加了很多不可索引的开销,尽管您可能有一个极端的用例,这似乎是一个好主意。如果您正在后端移动应用程序,它可能会很有用您希望在 api 调用中将资产与您的记录一起提供服务,但即便如此也不总是一个好主意。

    【讨论】:

    • 实际上#3 是一种赌注方法——这意味着您拥有完美的事务完整性、集成备份以及使用 sql2008 文件流,您可以在维护该文件的同时再次将 lob 移出到文件系统中。此外,您还可以做很多大多数程序员在做 CMS 时甚至都不知道的事情......比如为已发表的文章存储法师并与他们一起删除。
    • 只需将图像作为图像数据类型保存在数据库中 - 为什么需要存储 mime 类型或 Web 服务?
    【解决方案2】:

    Amazon 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 进行边缘缓存。快速、高效、便宜。最重要的是,敏捷。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多