在市场应用程序中存储图像的最佳方法:云服务、本地服务器还是数据库?

问题描述 投票:0回答:1

我正在构建一个市场应用程序,用户可以在其中发布带有图像的产品,类似于亚马逊。我正在考虑存储产品图像的三种选项:

  1. 云服务

(例如 Firestore、Linode、Heroku)——应用程序和数据库也将部署在云中。

  1. 专用服务器上的本地存储

– 将图像存储在服务器上的本地文件夹中。

  1. 数据库存储

– 将图像直接保存在数据库中(在专用服务器上或在云端)。

我主要担心的是:

  • 成本

从长远来看,哪种选择最实惠?

  • 性能:

我认为选项 1(云服务)可能是最昂贵的,但可能会提供更快的图像加载时间。这是真的吗? 如果有人对图像加载性能至关重要的应用程序有过使用经验,我将非常感谢您提供关于哪种方法最适合您以及原因的意见。

谢谢!

amazon-web-services firebase file-upload local-storage
1个回答
0
投票

更好的做法之一是使用专用存储,例如 AWS(Amazon Web Services)提供的称为 S3 (https://aws.amazon.com/s3/) 或 Firestore,正如您已经提到的.

实践

您应该考虑以下一些事项:

  • 如果将其存储在数据库中,数据库将增长得非常快。数据库越大,查询速度可能会变慢,并且会出现单点故障 - 如果您万一丢失数据库,您也会丢失图像。
  • 根据图像的大小及其数量,当您用完“本地计算机”上的空间时,您将不得不寻找运行新服务器、扩展存储或类似的东西,这在时间和成本方面都是昂贵的钱。
  • 存储图像时,考虑存储应用某些过滤器、调整大小、裁剪(例如,您想要 mimetypes jpg、jpeg 或 png 的 100x200 图像),这样您就可以标准化该过程,从而将图像的大小减小到仅需要存储(您可能不需要在页面上显示产品的 4K 图像,因为这会降低页面速度并增加带宽,您可能会或可能不会付费,具体取决于您的云/服务器提供商)。

成本

就成本而言,如果您标准化上传 100x200 图像的流程,例如使用 80% 压缩(意味着 20% 损失),那么您很可能会看到大约 5-10 KB 的图像。

如果您对用户数量、产品数量等有一些估计,您可以快速计算成本,但 S3 和 Firestore 相当便宜。

此外,S3 根据频率和使用情况有不同的层,因此从长远来看,如果您存储人们不经常访问的项目,您可以将其移动到不经常访问的层,这将降低存储这些项目的成本(但会增加访问成本)。

性能

在性能方面,我会立即建议使用云服务,因为这样你就可以将整个责任转移到他们这边 - 云服务具有高可用性,允许真正良好的可访问性和低延迟。

他们还可以选择添加 CDN(内容分发网络),亚马逊有 Cloudfront,它基本上将经常访问的项目缓存在边缘,提供极低的延迟和缓存(因此您无需访问 S3 存储桶)。

总结

总的来说,你不应该立即关注成本,因为当你成长时,成本是不可避免的。对于初学者来说,云服务是免费的,您有成熟的 SDK,您很可能应该使用它们,因为您不需要在终端处理图像,并且云服务将保证您一定程度的可用性、无限的可扩展性和出色的性能总的来说,它们是一个很棒的东西。

最后要说的是,不要想太多,当你到了人们使用你的市场的地步,你必须重新考虑你的策略时,这意味着你已经走在了良好的轨道上,开发人员和公司不断重构和改变策略。

© www.soinside.com 2019 - 2024. All rights reserved.