1

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

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

我可以想到以下几点:

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

一些额外的事实:

  • 我无法更改数据库并一起摆脱 blob,而只能将文件引用保存在数据库中(就像在 ol' Access 时代一样),因为该数据库被另一个实际需要 blob 的应用程序使用。
  • 图像很少更改,即如果图像在数据库中,它通常会永远保持这种状态。
  • 将对图片进行多次读取访问,每个视图将显示 10-100 张图片。(取决于用户的设置)
  • 图片相对较小,< 500 KB
4

2 回答 2

1

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

于 2009-07-11T09:30:54.580 回答
1

一件重要的事情是使用适当的 HTTP 缓存控制……也就是说,正确设置到期日期,正确响应HEAD请求(并非所有平台/网络服务器都允许这样做)……

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

问候

back2dos

于 2009-07-12T12:40:04.083 回答