当必须将图片作为 blob 存储在数据库中时,将图片发送到浏览器的最佳方法是什么?

发布于 2024-07-26 22:11:48 字数 439 浏览 3 评论 0原文

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

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

我可以想到以下内容:

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

一些额外的事实:

  • 我无法更改数据库并完全删除 blob,只能将文件引用保存在数据库中(就像在 Access 时代那样),因为该数据库由另一个实际需要 blob 的应用程序使用。
  • 图像很少变化,即如果图像位于数据库中,它通常会永远保持这种状态。
  • 图片会有多次读取访问,每次查看会显示10-100张图片。 (取决于用户的设置)
  • 图片比较小,< 500 KB

I have an existing database containing some pictures in blob fields. For a web application I have to display them.

What's the best way to do that, considering stress on the server and maintenance and coding efforts.

I can think of the following:

  • "Cache" the blobs to external files and send the files to the browser.
  • Read them from directly the database every time it's requested.

Some additionals facts:

  • I cannot change the database and get rid of the blobs alltogether and only save file references in the database (Like in the good ol' Access days), because the database is used by another application which actually requires the blobs.
  • The images change rarely, i.e. if an image is in the database it mostly stays that way forever.
  • There'll be many read accesses to the pictures, 10-100 pictures per view will be displayed. (Depending on the user's settings)
  • The pictures are relativly small, < 500 KB

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最终幸福 2024-08-02 22:11:48

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

I would suggest a combination of the two ideas of yours: The first time the item is requested read it from the database. But afterwards make sure they are cached by something like Squid so you don't have to retrieve the every time they are requested.

ゞ花落谁相伴 2024-08-02 22:11:48

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

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

greetz

back2dos

one improtant thing is to use proper HTTP cache control ... that is, setting expiration dates properly, responding to HEAD requests correctly (not all plattforms/webservers allow that) ...

caching thos blobs to the file system makes sense to me ... even more so, if the DB is running on another server ... but even if not, i think a simple file access is a lot cheaper, than piping the data through a local socket ... if you did cache the DB to the file system, you could most probably configure any webserver to do a good cache control for you ... if it's not the case already, you should maybe request, that there is a field to indicate the last update of the image, to make your cache more efficient ...

greetz

back2dos

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文