【问题标题】:Store Images in Db or on Server? [duplicate]将图像存储在数据库中还是服务器上? [复制]
【发布时间】:2012-01-21 09:03:54
【问题描述】:

可能重复:
Storing Images in DB - Yea or Nay?

我正在制作一个 asp.net mvc 站点,该站点将有一个论坛来上传一些信息。我希望能够让它上传图像。但是我不确定是否应该将这些图像保存在数据库中或将它们保存到文件服务器。

我没有看到超过 200Kb 的图像(这可能非常高)。我认为平均值会低于 50kb。

那么用什么比较好呢?

【问题讨论】:

    标签: sql-server asp.net-mvc-3 file-upload


    【解决方案1】:

    如果您不需要控制对这些图像的访问(即它们是公开的,而不是基于角色的),则将它们存储在服务器上并保留指向数据库中路径的链接。

    使用 DB 解决方案的问题是您必须将它们流式传输出去。可能是对包含大量图片的论坛页面的性能拖累。

    正如我常说的,当网络服务器可以做得更好时,为什么还要编写用于提供文件的代码?

    【讨论】:

    • +1 你会得到好处(假设你将显示这些图像以及上传它们)图像被缓存在浏览器端(你会发现从模型/视图模型获取图像到浏览器会产生大量的数据库操作)。
    【解决方案2】:

    取决于你看重什么以及你用它们做什么:

    数据库中的图像:

    • 与关联的数据一起生活,当数据迁移到另一个系统时,没有机会分离
    • 更容易备份(因为它们都在数据库中)
    • 更安全,更难意外或故意操纵

    文件系统上的图像

    • 节省数据库服务器存储空间 - 如果您在 为数据库空间付费的共享环境
    • 更容易在代码中检索
    • 更容易在 html 中引用

    我不认为有适用于所有情况的“最佳”方法 - 但话虽如此,如果它用于网站,那么文件系统对我来说似乎更有意义!

    【讨论】:

      【解决方案3】:

      我个人会选择将图像存储在服务器上,然后将每个图像的路径保存在表中。在性能方面它可以更好。

      【讨论】:

        【解决方案4】:

        几年前我开发了一个房地产应用程序,并选择将每个房产的图像存储在数据库中。表演太可怕了。然后我将其更改为将图像存储在文件系统中(这是一个相当长的操作)并且性能更快。

        我会说您应该存储在数据库中的唯一项目是大型文本文档,因此它们可以用于 SQL Server 的全文搜索之类的东西。但是,我永远不会将图像存储在数据库中,尤其是在每页可能有多个图像的情况下。

        将 URL 存储在数据库中,然后从文件系统中获取图像。

        【讨论】:

        • 大约 5 年前我开发了一个 CMS,我们发现它的性能非常好。那么 - 确定不是您不知道如何有效地处理数据库中的二进制数据?
        【解决方案5】:

        我有一个基于流的高效解决方案示例,用于从 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 服务器在简单地流回文件方面非常有效。使用数据库的具体原因可能是访问控制、自包含备份-恢复或以数据库为中心的高可用性/灾难恢复解决方案。

        请记住,最快的响应是浏览器从不询问时:) 在您的响应中使用 caching tags

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-17
          • 2010-10-17
          • 1970-01-01
          • 1970-01-01
          • 2014-05-09
          • 2023-04-09
          • 2013-01-21
          • 2012-04-01
          相关资源
          最近更新 更多