我在 Internet 上到处搜索了将图像保存在 Heroku PG-SQL 数据库中与将图像保存在 Amazon S3 中的比较。我目前正在尝试做出设计决定。然而,这是我第一次编写网络应用程序。到目前为止,这是我所知道的决定:
- 在数据库中保存图像会降低应用程序的性能
- 与文件系统相比,在 Db 上保存图像的成本很高
- 您无法访问 Heroku 中的文件系统
- 您可以以非常便宜的价格将图像保存在 Amazon S3 中
- 存储在 Amazon S3 上的图像如果不通过 Heroku 上的应用程序,则无法在保存前进行处理
- 每次调用在 Amazon S3 上检索和保存图像都需要付费
- 如果浏览器正在检索具有图像的对象,则浏览器会为每个对象发出 2 次请求,一次请求来自 heroku 的数据,另一次请求来自 S3 的图像。这可能会有问题,因为浏览器每单位时间只能发出特定的 >m.unt 个请求。
- 如果图像较小,则将图像保存在数据库中不会降低性能。
- 从数据库中删除图片会导致碎片化
这些是我对这个话题的了解。就目前情况而言,我倾向于在 Heroku DB 中保存图像。由于它们大多是缩略图/小图像,并且它们的大小小于 250MB
我想知道是否有人可以让我知道这些事实是否有误,或者在做出此设计决定时是否需要考虑其他因素。
此外,如果有人能指出网络上关于此主题的一些良好讨论,我将不胜感激。我找不到关于此讨论的任何内容。
最佳答案
将它们保存在 S3 上。在性能方面,它比存储在数据库中领先——如果您存储在数据库中,请求必须通过您的 Web 应用程序,然后发出数据库请求(或立即点击清漆,但无论如何都是如此)。此外,除非您有很多测功机,否则这意味着用户一次只能获取一张图像(瘦是单线程的,除非在针对长时间运行的请求的特殊配置下)。使用 S3(或任何云存储解决方案),它就像对静态资源的另一个 HTTP 请求一样简单——您的应用程序甚至不必知道它!
关于database - 在 heroku DB 和 Amazon S3 上保存图像 : Pros Cons?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778555/