在我的网络应用程序中,我使用MongoDB GridFS来存储用户上传的图像。
网站的其余部分由MySQL管理。
在照片表中(在mysql中)我有三个字段用于存储文件对象的MongoId。
所以我存储了三个版本的图像。小,中,大。
我的问题是,有时我需要使用小于图像的“小”版本的缩略图(即在小工具框,消息头像等)或者我需要使用略小的版本媒体形象。
所以我的问题是,最好只将一个图像存储在GridFS系统中,然后在照片表中有一个存储MongoID的字段,然后创建一个动态调整图像大小的脚本(即http://localhost/image/fetch/ {mongoid}?调整= 50
否则,在我的数据库中我需要thumbnail_50,thumbnail_100,medium_300,medium_400等等。
顺利调整大小路线会有什么影响?这是一个坏或好主意?你会做什么?
感谢。
答案 0 :(得分:4)
动态调整大小会导致服务器上的CPU负载大大超过一次调整为各种大小并存储结果。另一方面,提前调整大小可能会导致更大的数据集存储在GridFS中。换句话说,这是一种权衡。
您可以考虑使用混合方法,在其中您可以动态调整大小但将结果保存回GridFS,这样您就不需要将任何一个图像调整为给定大小多次。
您还应该知道HTML和CSS允许使用各种选项来控制图像的显示大小。例如:
<img src="/path/to/image.jpg" width="50"/>
将导致图像按比例缩放到50像素宽(在大多数现代浏览器中,无论如何)。您还可以使用width
和max-width
CSS属性来控制图像大小。
对于我自己,并且对你将要存储的图像的音量或文件大小一无所知,我可能会在添加图像时调整大小 - 换句话说,只需一次点击页面速度和CPU负载 - 然后使用max-width
来控制屏幕尺寸,如果在一个特定情况下需要稍微不同的尺寸,则使用GridFS提供各种尺寸。