显示存储在MongoDb中的图像

kpa*_*kin 7 javascript c# base64 mongodb

我有一个像应用程序的pinterest.图像和其他相关信息存储在MongoDb中.通常图像的大小约为1mb.图像显示无限滚动.当加载带有base64字符串的长脚本时,浏览器崩溃或响应时间非常高(特别是对于Internet Explorer)显示存储在MongoDb中的图像的最佳方法是什么?

Rog*_*ger 5

我认为实现这一目标的最佳方法是让您在服务器上的某个公共文件夹中进行物理存档.这应该是只需要使用类似的方式访问的

http://www.myhost.com/images/my/path/to/image.jpg

你仍然可以保持你的Base64形象在MongoDB中作为备份,然而,这是不是您检索图像由于性能问题(如你所看到的)的最佳方式.我建议你做以下事情:

每次将图像存储在mongo上时,请务必将"图像文件"存储在服务器上的某个公共场所.请记住,您应该在正在使用的mongo模型上保留该文件的路径.因此,下次调用对象时,您应该只获取图像的路径,而不是获取基本64图像.

可以说,你有这个模型

myModel = {
    name: "some name",
    image64: "someextralongstringveryveryveryweird......",
    imageUrl: "/images/my/path/to/image/imagename-id.jpg"
}
Run Code Online (Sandbox Code Playgroud)

下次你查询它时,你可以使用mongo投影忽略image64,在你的客户端你只需要使用一些利用该url的html标签.

<img src="/images/my/path/to/image/imagename-id.jpg">
Run Code Online (Sandbox Code Playgroud)

这将有助于您提高性能.

有一些库可以帮助您管理图像文件的创建.ImageMagick是我使用过的,它是如此多才多艺.

  • 为什么不将图像存储在 mongodb 中? (2认同)

str*_*rah 3

我猜你有这个应用程序的一些服务器端部分?为什么不创建一个小型 API 来检索图像?

因此,您的浏览器将具有有关图像的信息,并且可以向您的服务器询问该信息,或者符合或的内容http://your_server/api/image/imageIDhttp://your_server/images/imagename然后您的服务器将仅传输该图像,您不需要将其存储在文件系统中。

在客户端(浏览器),您只需要实现“延迟加载”。