Database 什么';当图片必须作为blob存储在数据库中时,向浏览器发送图片的最佳方式是什么?

Database 什么';当图片必须作为blob存储在数据库中时,向浏览器发送图片的最佳方式是什么?,database,language-agnostic,image,blob,Database,Language Agnostic,Image,Blob,我有一个现有的数据库,其中包含blob字段中的一些图片。对于web应用程序,我必须显示它们 考虑到服务器的压力以及维护和编码工作,最好的方法是什么 我可以想到以下几点: 将blob“缓存”到外部文件并将文件发送到浏览器 每次请求时直接从数据库中读取它们 一些额外的事实: 我不能同时更改数据库和删除blob,只能将文件引用保存在数据库中(就像在good ol'Access时代),因为数据库被另一个实际需要blob的应用程序使用 图像很少改变,即如果图像在数据库中,它通常会永远保持这种状态 将

我有一个现有的数据库,其中包含blob字段中的一些图片。对于web应用程序,我必须显示它们

考虑到服务器的压力以及维护和编码工作,最好的方法是什么

我可以想到以下几点:

  • 将blob“缓存”到外部文件并将文件发送到浏览器
  • 每次请求时直接从数据库中读取它们
一些额外的事实:

  • 我不能同时更改数据库和删除blob,只能将文件引用保存在数据库中(就像在good ol'Access时代),因为数据库被另一个实际需要blob的应用程序使用
  • 图像很少改变,即如果图像在数据库中,它通常会永远保持这种状态
  • 将有许多对图片的读取访问,每个视图将显示10-100张图片。(取决于用户的设置)
  • 图片相对较小,小于500 KB

我建议将您的两个想法结合起来:第一次请求项目时,从数据库中读取它。但之后要确保它们被Squid之类的东西缓存,这样你就不必每次请求它们时都检索它们了。

重要的一点是使用适当的HTTP缓存控制。。。也就是说,正确地设置过期日期,正确地响应
HEAD
请求(并非所有平台/Web服务器都允许这样做)

将这些blob缓存到文件系统对我来说很有意义。。。更重要的是,如果数据库正在另一台服务器上运行。。。但即使没有,我认为简单的文件访问也比通过本地套接字传输数据便宜得多。。。如果您确实将数据库缓存到文件系统中,您很可能会配置任何Web服务器来为您执行良好的缓存控制。。。如果不是这样的话,你也许应该请求,有一个字段来指示图像的最后一次更新,以使你的缓存更有效

格里茨

back2dos