服务器上的硬文件或用于ASP.Net应用程序的SQL中的声音和图像文件的二进制文件

时间:2009-04-02 18:20:52

标签: asp.net sql optimization file

我正在构建一个ASP.Net C#Web应用程序,该应用程序将使用大量声音文件和图像文件。考虑到性能,最好将所有文件存储在SQL中作为图像数据类型,并从数据库中检索或存储/存档服务器上的硬文件并将路径存储在sql中?我很好奇它的优点和缺点 - 除了显而易见的存储空间和可管理性。

2 个答案:

答案 0 :(得分:1)

我当前的客户目前正在查看相同的选项。需要考虑一些权衡因素:

存储为IMAGE数据类型:

  • 您只需备份数据库而不是数据库并放置在文件系统上
  • 您不必担心在没有使用新位置更新数据库的情况下移动文件,或者挂起指向不存在的文件的任何其他问题

存储为DB中包含路径的文件:

  • 访问速度稍快(我们将在接下来的几天内对此进行量化)

最初我认为客户端缓存图像也会出现问题。例如,当.NET从数据库中获取图像时,客户端浏览器无法对其进行缓存 - 每次都看起来像是一个新图像。然后我了解到,除非您为用户提供文件级访问(安全禁止),否则使用直接文件访问会遇到同样的问题。

答案 1 :(得分:0)

从性能角度来看,最好将声音/图像存储为文件,并保留对数据库中位置的引用。这将使您不必将数据从数据库传输到Web服务器,并在引用时通过处理程序重新构建“文件”。当然,缓存可以帮助你,但你仍然会在每次缓存未命中时支付罚金。对于我的钱而言,这个解决方案在需要开发的代码方面稍微不那么复杂,尽管你确实存在冲突问题以及一些额外的安全设置(可能),如果你要启用上传的话。