4

我在互联网上到处搜索,比较将图像保存在 Heroku PG-SQL 数据库中与保存在 Amazon S3 上的比较。我目前正在尝试做出设计决定。但是,这是我第一次编写网络应用程序。到目前为止,这是我所知道的做出决定:

  1. 在数据库上保存图像会降低应用程序的性能
  2. 与文件系统相比,将图像保存在 Db 上是昂贵的
  3. 您无法访问 Heroku 中的文件系统
  4. 您可以以非常便宜的价格将图像保存在 Amazon S3 中
  5. 如果存储在 Amazon S3 上的图像未通过 Heroku 上的应用程序,则无法在保存之前对其进行处理
  6. 在 Amazon S3 上检索和保存图像每次调用都要花钱
  7. 如果浏览器正在检索具有图像的对象,则浏览器对每个对象发出 2 个请求,1 个请求来自 heroku 的数据,另一个来自 S3 的图像请求。这可能是有问题的,因为浏览器每单位时间只能发出某些 >m.unt 的请求。
  8. 如果图像尺寸小,将图像保存在数据库上不会大大降低性能。
  9. 从数据库中删除图像可能会导致碎片

这些是我知道的关于这个话题的事实。就目前情况而言,我倾向于将图像保存在 Heroku DB 中。因为它们大多是缩略图/小图像,它们的大小小于 250MB

我想知道是否有人可以让我知道这些事实是否错误,或者在做出这个设计决定时我是否需要考虑其他因素。

另外,如果有人能指出我在网络上关于这个主题的一些很好的讨论,我将非常感激。我在这个讨论中找不到任何确切的内容。

4

1 回答 1

6

将它们保存在 S3 上。性能方面,它比存储在数据库上要好得多——如果你存储在数据库上,请求必须通过你的 Web 应用程序,然后发出一个 DB 请求(或立即点击 varnish,但无论如何都是如此)。此外,除非您有很多 dyno,否则这意味着用户一次只能获取一个图像(瘦是单线程的,除非在特殊配置下用于长时间运行的请求)。使用 S3(或任何云存储解决方案),它就像对静态资源的另一个 HTTP 请求一样简单——您的应用甚至不必知道它!

于 2012-05-28T01:55:41.673 回答