2

在我的网络应用程序中,我使用 MongoDB GridFS 来存储用户上传的图像。

该站点的其余部分由 MySQL 管理。

在照片表(在 mysql 中)中,我有三个字段用于存储文件对象的 MongoId。

  • 小的
  • 中等的
  • 大的

所以我存储了三个版本的图像。小型、中型和大型。

我的问题是,有时我需要使用比图像的“小”版本更小的缩略图(即在小部件框、消息头像等中),或者我需要使用稍微小一点的中等图像版本.

所以我的问题是,最好只在 GridFS 系统中存储一张图像,然后在照片表中使用一个字段来存储 MongoID,然后创建一个动态调整图像大小的脚本(即http://localhost/image/ fetch/ {mongoid}?resize=50

否则,在我的数据库中,我需要 thumbnail_50、thumbnail_100、medium_300、medium_400 等。

沿着即时调整大小路线走会有什么影响?这是一个坏主意还是个好主意?你会怎么办?

谢谢。

4

1 回答 1

4

动态调整大小将导致服务器上的 CPU 负载比一次调整到各种大小并存储结果要多得多。另一方面,提前调整大小可能会导致将更大的数据集存储在 GridFS 中。换句话说,这是一种权衡。

您可以考虑一种混合方法,您可以即时调整大小,但将结果保存回 GridFS,这样您就不需要多次将任何图像调整为给定大小。

您还应该知道 HTML 和 CSS 允许使用各种选项来控制图像的显示大小。例如:

<img src="/path/to/image.jpg" width="50"/>

将导致图像按比例缩放为 50 像素宽(在大多数现代浏览器中,无论如何)。您还可以使用widthmax-widthCSS 属性来控制图像大小。

就我自己而言,我对要存储的图像的体积或文件大小一无所知,我可能会在添加图像时调整大小 - 换句话说,将页面速度和 CPU 负载命中一次 - 然后提供GridFS 中的各种尺寸,max-width如果在一种特定情况下需要稍微不同的尺寸,则用于控制屏幕尺寸。

于 2011-09-22T14:15:18.017 回答