在数据库中存储图像参考的最佳实践

Posted

技术标签:

【中文标题】在数据库中存储图像参考的最佳实践【英文标题】:Best practices for storing image reference in a database 【发布时间】:2012-09-04 20:30:12 【问题描述】:

我正在设计一个页面,其中每张上传的图片都包含不同的图片尺寸。

For example an image can be:
original: whatever a user uploads
large: 718x405
medium: 344x194
small: 125x70
square: 238x238

过去,在 mysql 中,我只有名为 image_id、image_name 的字段,然后在代码中我会引用这些图像的位置:

Example from my past:
/images/gallery/large/some_image.jpg
/images/gallery/square/some_image.jpg

我见过其他系统做这样的事情:

/images/gallery/some_image-718x405.jpg
/images/gallery/some_image-238x238.jpg

除了将图像放在自己的表中的基本思想之外,还有哪些为图像创建数据库的最佳做法。当您处理同一张图片的多种尺寸时,我会要求更多。

谢谢!

【问题讨论】:

【参考方案1】:

我会将图像保存为平面文件,并在数据库中仅保留 image_id 和 image_name。

/images/<image_id>/original
/images/<image_id>/<width>_<height>

并使用您喜欢的任何 URL“格式”使用 mod_rewrite 和 php 提供这些文件。如果您需要性能,则使用某种缓存(文件、内存缓存)将 image_name 与 image_id 匹配以避免不必要的数据库连接。

如果您有使用相同脚本的 PHP 会话,请记住在提供图像之前执行 session_write_close,否则所有其他图像将在加载一个图像时等待。

删除图像后,您将只有一个目录需要清除和删除。

【讨论】:

以上是关于在数据库中存储图像参考的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

在 S3 中使用带有外部存储的图像和缩略图进行数据库设计的最佳实践?

在应用程序中存储个人资料图像的最佳实践

在服务器上存储图像的最佳实践

SwiftUI / iOS / iPhone如何在存储之前加密数据/图像以及在哪里/如何在本地存储,一般最佳实践?

在 Rails 数据库中存储和稍后访问 JSON 对象的最佳实践

在 UITableView 上显示图像的最佳实践