【问题标题】:store images locally vs cloudinary vs s3在本地存储图像 vs cloudinary vs s3
【发布时间】:2020-05-05 16:35:55
【问题描述】:

设置:

包含帖子的博客,使用 Laravel 构建,其中:

  • 每个帖子最多可以有 1 张图片(可为空)。
  • 博客中的最​​大帖子数为 1000。假设有 1000 个帖子进行讨论。
  • 每个帖子都有一个评论部分。注册用户可以在其中发表评论并在他们的评论中包含图像。假设每个帖子在 cmets 中有 2 张图片。

所以总共需要存储 3000 张图像*(我猜是调整大小)、呈现等等。

这是长期的理想数量,我不是在寻找“可扩展”的解决方案,因为不会出现疯狂的指数增长。

*实际上暂时它更少,我认为对于这些数量的媒体文件来说,它是 1000/1500/2000 还是 3000 并不重要。如果错了,请纠正我。

需要注意的一些额外事项:

  • 我将它托管在共享主机中(我最多可以存储 300k 个文件)。
  • 我希望它受到保护,因此不会在图像文件的封面上上传恶意文件。
  • 我正在寻找一种预算解决方案(因此,如果 s3 将在 12 个月后开始收取高额费用,这将使其无关紧要),最好是免费的(。

因此,难题在于将所有图像本地存储在 Storage 文件夹中(使用一些 Laravel 包操作图像)。其他可能性是云端,我不太了解,只是它可以存储/操作/备份/使用他们的 api 来呈现我存储在那里的图像。

如果我选择在本地进行 - 将用户上传的图片存储在本地是否安全?如何确保它不是伪装成图像文件的恶意软件?

在本地存储时,如果有这么多的图像/内容,会导致共享主机出现性能问题吗?

使用 cloudinary 对我有什么好处?

谢谢。

【问题讨论】:

  • 我建议您寻找一种解决方案,如果您愿意/需要,您可以很容易地进行更改。如果您的服务器上有空间并且您的流量不会那么高,那么我会说暂时将其保留在本地(除非有特定原因不这样做)。看看docs.spatie.be/laravel-medialibrary/v7/introductiongithub.com/spatie/laravel-medialibrary/issues/1185
  • 感谢您的回复。这个包基本上是一个处理图像的api吗?这个和干预包有什么区别?此外,每月有几千名用户会被视为低流量还是高流量?
  • 我会说这是相当低的流量。干预图像是一个用于处理图像的包,媒体库也这样做,但也提供了一种处理图像存储和不同操作的方法。这只是一个建议,可能不适合您的需求,但如果没有别的,它可能会给您一个起点。

标签: laravel image amazon-s3 shared cloudinary


【解决方案1】:

Cloudinary 在这种情况下实际上可以提供很多帮助。 您可以将 Cloudinary 集成到项目中,而不是将资源存储在本地并编写一些东西来操作它们。

这将释放服务器空间。在本地存储图像可能会也可能不会影响性能,具体取决于架构,但释放服务器资源始终是一种好习惯。

此外,manipulation 和图像的交付可以在第一次请求时(或者如果您愿意,可以在请求之前)通过简单的 API 调用即时完成。因此,您无需编写新内容,而是利用现有的 API。

Cloudinary 还有一个功能齐全的free tier,您可以使用它。如果您目前不期望指数级增长,那么该层对于项目来说已经绰绰有余了

完全披露:我目前在 Cloudinary 工作,(但上述内容仍然成立 :))。

【讨论】:

  • 谢谢你的答案。您能否提供一个示例细分,说明我的用例如何适合免费的云计算层?假设每天最多存储 3000 张图片和数百名用户访问该网站并查看具有图片的不同帖子/cmets。
  • 免费层有 25 个积分。 1 个积分等于 1000 次转换或 1GB 托管存储或 1GB 每月查看带宽。上传 3k 张图片并在每张图片上执行一次转换将计为 6 个学分(上传一张图片被视为一次转换以及对每张上传的图片进行 3k 次转换)。假设每张图片的重量为 1MB(高估计),则意味着 3GB 的存储空间或另外 3 个积分 这将每 30 天留下 16 (25-9=16) GB 的带宽用于交付,我假设每天有数百名观众不会消费,但随流量而变化
  • 一旦我完成了所有 3k 图像/转换的上传,意味着下个月我将再次获得 25 个积分,这相当于 25GB 的可用带宽供我的用户查看/交互?另一个问题 - CDN 是自动的还是我需要集成它?
  • 带宽和转换计算在 30 天的滚动窗口中。所以是的,假设在初始上传后不再有任何上传或转换,30 天后您将能够将所有 25 个积分用于带宽 CDN 开箱即用。使用 Cludinary 交付的每个资源都使用 CDN 交付。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2014-05-30
  • 2014-06-26
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多