dan*_*rvt 9 base64 mongodb gridfs
我正在使用mongodb,我想在我的服务器中存储一些缩略图.什么是最好的?使用GridFS或将这些图像转换为base64并将它们直接存储在文档中.
一如既往有一些(dis)优势:
优点:
中性:
缺点:
使用MongoDB和NoSQL,只需知道您的用例!
如果您的文档中的批次共享相同的图像,则应使用GridFS并仅提供指向这些文件的链接,因为1.共享数据的空间效率更高.2.客户端可以缓存图像请求,只需检索一次.
如果您的客户始终需要缩略图,您可以考虑将文件作为base64嵌入到响应中.这是特别好的,如果1.图像不在文档之间共享和/或2.图像经常变化并且缓存是无用的/不可能的.
Base64当然意味着线路上的流量更多,因为它需要8位来传输6位.即75%的效率.这当然只影响客户端 - 服务器通信,因为在MongoDB中,您始终可以将数据存储为二进制字段.
您是否更喜欢数据库请求(=使用GridFS)?或者更大的数据/文档大小(=嵌入式)?
我们做了什么:
我们使用嵌入式缩略图,即使我们可能有重复的图像.在服务器上激活gzip压缩后,服务器 - 客户端传输大小不再重要.但如前所述,这是一个权衡:现在我们有更少的客户端请求和更少的数据库请求,但由于嵌入使得缓存图像变得不可能,我们现在在线上有更多的数据.
结论:
没有一种尺寸适合所有解决方案.
我建议您使用GridFS。借助GridFS,您可以利用MongoDB REST API。因此使用 MongoDB API 检索文档不会出现过热的情况。REST API 将完成所有艰苦的工作并节省您的时间。