Web应用程序中的图像

Web应用程序中的图像,web,Web,我正在开发一个应用程序,在这个应用程序中,用户将上传大量图像,我必须显示这些图像网页 存储和检索图像的最佳方式是什么 1) 数据库 2) 文件系统 3) CDN 4) JCR 还是别的什么 我知道的是 数据库:从数据库中保存和检索图像将导致对数据库的大量查询,并且每次都将blob转换为文件。我认为这会降低网站的性能 文件系统:若我在数据库中保存图像信息,在文件系统中保存图像文件,那个么就会出现同步问题。比如说,如果我备份了数据库,我们就必须备份镜像文件夹。如果有数以百万计的文件,它将消耗大量的服

我正在开发一个应用程序,在这个应用程序中,用户将上传大量图像,我必须显示这些图像网页

存储和检索图像的最佳方式是什么

1) 数据库 2) 文件系统 3) CDN 4) JCR 还是别的什么

我知道的是 数据库:从数据库中保存和检索图像将导致对数据库的大量查询,并且每次都将blob转换为文件。我认为这会降低网站的性能

文件系统:若我在数据库中保存图像信息,在文件系统中保存图像文件,那个么就会出现同步问题。比如说,如果我备份了数据库,我们就必须备份镜像文件夹。如果有数以百万计的文件,它将消耗大量的服务器资源 我在这里读过

另一种选择是CDN和JCR

请推荐最好的选择


问候

CDN可能是您的一个好选择


您可以将指向图像的链接以及图像信息存储在数据库中。

如果您只计划部署到一台服务器(即负载平衡器后面的多台服务器),或者如果您的所有服务器都可以访问共享文件系统,则使用文件系统才是一个真正的选项。它也可能效率低下,除非在应用程序服务器中缓存频繁访问的文件

您是对的,将实际的二进制数据存储在数据库中可能有些过分,而不是数据库的最佳功能

我建议一个组合:

  • CDN(如AWS CloudFront)由公开可访问(但关键是公开只读)存储(如Amazon S3)支持,这意味着无论浏览用户位于何处,都可以高效地为您的图像提供服务,并适当地将其缓存在浏览器中(从而最小化带宽)。S3(或类似版本)意味着您可以使用API从应用服务器上传和管理它们,而不必担心所有服务器(以及外部世界)将如何访问它们
  • 我建议在数据库中保存每个图像的元数据。这意味着您可以为每个图像分配一个唯一的密钥(由数据库生成),添加额外的信息(文件格式、大小、标记、作者等),还可以通过CDN将到S3(或类似)的路径存储为图像的公共可访问路径
数据库和共享的公共可访问存储的这种组合可能是一种很好的组合,让您能够同时获得这两个方面的最佳效果。该数据库还意味着,如果您将来需要移动/更改或批量删除图像(可能是删除删除其帐户的作者上传的所有图像),您可以执行高效的数据库查询以收集元数据,然后更新/更改存储在数据库所说存在的S3位置的图像

您说要在网页上显示图像。这种组合意味着应用程序服务器可以高效地查询数据库以获取要显示的图像选择(包括按作者限制、分页等),然后生成包含引用正确CDN路径的图像的视图。这意味着,当您将动态内容(显示图像的页面)与静态内容(图像本身通过CDN)相结合时,查看图像也非常高效