我目前正在使用Express和MongoDB构建的API进行个人项目。我计划在完成后部署它。
所以事情是,我想有许多图像为我的实体Park
或Rides
显示他们的正面与旋转木马,卡片组件…
你对最佳实践有什么想法吗?我不知道我是否必须将它们存储在MongoDB中,直接存储在我的应用程序中,甚至使用AWS的S3桶。
图像是应用程序中使用的静态资产,高质量图像的大小可能很大。我个人建议您使用Aws S3,原因如下:
如果你选择将图像存储在数据库这将花费你很多,因为你要转换的图片在某些二进制形式存储在DB然后服务器将会做所有的前处理后存储和检索数据库的图像数据,不是一个有效的方式,而另一方面一个Aws s3 bucket是相当便宜和快得多,而且你可以很容易通过s3对象url访问的图像。大多数不必要的处理将由s3处理,如加密、解密和其他安全措施。另一方面,将资产直接保存在应用程序中并不是一个好的选择,因为图像的大小会变得很大,并且直接使用操作系统处理图像也不是一种有效的方法。
有几种方法可以做到:
1 -不推荐:保存在项目文件夹
不建议在这里存储这么多图像,因为它可能导致数据泄漏和丢失,项目文件夹在不需要的情况下变得太大,并且考虑最佳实践也没有多大意义。
但是,如果你想,这里有一个例子:
<<p>文件夹结构/strong>/public
/images
img_name.png
img_name.png
...
/src
...
2 -不建议:将所有图像存储在Mongo DB中。
不建议这样做,因为数据库太大太笨重,它还需要base64转换,Mongo DB文件大小限制为16MB。
如果你愿意,请读这个。
3 -建议:将所有图像存储在云存储服务中,如Amazon S3,用您的行id命名每个图像,例如:
数据库表:
Users
id - name - email - password
1 - John - ... - ...
图像名称:
使用row id =1.png
或连接表名=user1.png