1

我正在为门户网站构建数据库结构,我对我决定不会存储在数据库中的元素有一些疑问,通常是媒体,特别是图像。

假设我们有内容,并且每个内容都可以有一个主图像。此外,还有一个包含特色内容的幻灯片,需要内容中的大图像。一个直观的想法是让数据库不执行此任务,并使用名称约定存储图像。然后,在代码 (php) 中,我可以检查文件是否存在,然后根据需要执行操作(要求上传幻灯片的图像,显​​示默认图像或地图而不是所需的主图像......)。另一个极端是将文件名存储在数据库中,其他选项是使用文件名约定,但在数据库中存储一个布尔值,而不是检查代码中是否存在。

我对主观角度感兴趣,但我真的很想知道是否有基于技术和客观原因的最佳实践,或者仅仅是出于实际原因......

4

2 回答 2

1

将图像文件名与每个内容记录一起存储在数据库中。这是最灵活的选项,因为您可以通过更新数据库记录轻松更改所选图像。

假设您添加某种后端/管理区域来管理内容。要更改内容的主图像,您可以在图像文件夹中显示文件下拉列表(以及文件上传选项),并轻松将记录更新为所选图像。

如果您想要内容图像的幻灯片,您可以简单地从表中选择图像文件名并输出<img />指向图像的标签。

如果您在没有数据库的情况下执行此操作,例如通过使用命名约定content-image-{contentId}.jpg来更改图像,您将需要重命名/删除文件,并且您需要满足不同的图像文件扩展名。

于 2012-10-03T15:29:31.050 回答
0

我不在数据库中存储图像。相反,我将它们存储在磁盘上的一个单独文件夹中,并维护一个包含名称、大小、mimetype 等的表。

我不将它们存储在数据库中的实际原因:

  • 如果我想在数据库结构中进行更改,我会使用mysqldump然后使用编辑器。如果没有转储中的所有二进制数据,这会更容易。
  • 我的数据库服务器运行在一个快速的 128GB SSD SATA 600 磁盘上以提高性能。空间有限。images 文件夹从 12TB 大小的 NAS 存储中挂载。
  • 当浏览器需要图像时,它不会与 html 一起加载,而是在单独的请求中加载。交付 html 时,图像不需要来自快速存储设备。
于 2012-10-03T15:29:53.740 回答