javascript-生成缩略图并将其上传到节点中的s3存储桶的最佳方法是什么?

我正在开发一个示例应用程序,其中后端在NodeJ上,前端使用React.该应用程序将处理一堆照片,
因此,用户可以上传照片,后端会将其保存到s3存储桶中.另外,我还需要一些转换,例如生成不同大小的缩略图,最有可能是两个100 px * 100px和200px * 200px的缩略图.

话虽这么说,处理缩略图生成过程的最佳方法是什么?

我还经历了一些类似cloudinary的工作,这似乎是即时转换图像的好选择.

现在,我有关于最佳实践的几个问题.

>我应该在我的应用服务器(NodeJs)上进行图像上传/转换吗?我问的原因是,我尝试了cloudinary,图片上传甚至没有到达应用服务器.
>或者点击应用服务器并在其中生成缩略图,然后
上载到s3.
>点击应用服务器,然后将图像上传到s3存储桶并触发
lambda函数执行所有转换(好处是什么?)

感谢您耐心阅读此问题.我愿意接受任何建议,想法和关注.

最佳答案
这取决于您的要求,但我会尽力指出每种方法的好处和陷阱.

首先,需要考虑一些事项:

>要上传多少张图像?
>这些图像和缩略图多久被访问一次?
>上传缩略图后需要多长时间才能访问缩略图?尽快接近还是可以接受几秒钟的延迟?
>这些图像有多大?
>更重要的是运行成本或开发成本/时间?

您需要了解所有这些内容,才能进行有效比较.

您的选择实际上并不是三个截然不同的选择.

选项1是独立的体系结构决策.无论您将所有内容或其他内容通过应用服务器推送回您自己,都由AWS和Cloudinary的前端或后端的SDK来决定.但是,如果您将所有内容都放在前端,请小心如何管理密钥.无论哪种方式都请当心,但这通常是人们忘记的前端代码,每个人都可以看到.

选项2和3与您是否在初始上传的过程中并在您的控制之下进行其他工作有关,还是与其他基于事件的体系结构无关地进行其他工作.

如果您在应用服务器上完成所有工作,请确保它具有合适的大小以应对工作负载,并且在出现任何问题时可以进行重试.这可能是最适合您的工作,并且显然会给服务器带来最大的负载.除非您的吞吐量非常恒定,非常高并且您可以正确地指定它们,否则增加服务器的大小可能会比使用lambda花费更多.

在图像上传结果上具有自动工作流程会使云提供商的责任(至少在重试方面)有点复杂.但是您仍然需要正确确定lambda的大小,以便及时处理所有问题.

两种情况都有大量的代码示例,但AWS lambda(caveat-基于30秒钟的谷歌搜索)可能更多.

您实际上并没有将其称为选项,但是Cloudinary会即时进行图像处理(如您在介绍中所述).这意味着您实际上不需要创建和保存缩略图,只需在URL中调用具有指定大小的原始图像即可.你能忍受延迟吗?大多数时候几乎无法识别.你能负担得起吗?无论是钱还是用完您的免费积分.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...