Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点中生成缩略图并上传到s3 bucket的最佳方法是什么?_Javascript_Node.js_Reactjs_Amazon S3_Aws Lambda - Fatal编程技术网

Javascript 在节点中生成缩略图并上传到s3 bucket的最佳方法是什么?

Javascript 在节点中生成缩略图并上传到s3 bucket的最佳方法是什么?,javascript,node.js,reactjs,amazon-s3,aws-lambda,Javascript,Node.js,Reactjs,Amazon S3,Aws Lambda,我正在开发一个示例应用程序,其中后端位于NodeJs上,前端使用React。这个应用程序将处理一堆照片, 所以用户可以上传照片,后端会将其保存到s3 bucket中。此外,我还需要一些转换,比如生成不同大小的缩略图,最有可能是两个100 px*100px和200px*200px的缩略图 话虽如此,处理缩略图生成过程的最佳方法是什么? 我也经历了一些类似的事情,这似乎是一个很好的选择,图像转换的飞行 现在我有一些关于最佳实践的问题 我应该点击我的应用服务器(NodeJs)进行图像上传/转换吗?我问

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

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

我也经历了一些类似的事情,这似乎是一个很好的选择,图像转换的飞行

现在我有一些关于最佳实践的问题

  • 我应该点击我的应用服务器(NodeJs)进行图像上传/转换吗?我问这个问题的原因是,我试过在哪里上传的图像甚至没有击中应用服务器

  • 或者点击appserver并在那里生成缩略图就可以了 上传到s3

  • 点击应用服务器,将图像上传到s3 bucket并触发 lambda函数执行所有转换(优点是什么?)


  • 感谢您耐心阅读这些问题。我愿意接受任何建议、想法和顾虑。

    这取决于您的要求,但我会尝试找出每种方法的优点和缺点

    首先,要考虑一些事情:

    • 将上载多少图像
    • 这些图像和缩略图多久会被访问一次
    • 上传后需要多久才能访问缩略图?尽可能接近即时或几秒钟的延迟是否可以接受
    • 这些图像有多大
    • 更重要的是运行成本还是开发成本/时间
    你需要了解所有这些,才能有效地进行比较

    你的选择实际上不是三个不同的选择

    选项1是一个独立的体系结构决策。无论您是否通过应用服务器推送所有内容或任何内容,这取决于您自己,AWS和Cloudinary的前端或后端都有SDK。但是,如果您将所有内容都放在前端,请注意如何管理密钥。无论如何都要小心,但通常人们忘记的前端代码可以被每个人看到

    选项2和3涉及到是否将附加工作作为初始上传的一部分并在您的控制下进行,或者与更多基于事件的体系结构分离

    如果您在应用服务器上完成了所有工作,那么请确保它的大小适合应付工作负载,并且如果出现任何问题,它可以处理重试。这对您来说可能是最大的工作量,显然会给服务器带来最大的负载。提高服务器的大小可能比使用lambdas的成本更高,除非您的吞吐量非常稳定,非常高,并且您可以对其进行适当的规范

    对于图像上传的结果有一个自动的工作流,这使得云提供商的责任有点复杂(至少在重试方面)。但您仍然需要调整lambda的尺寸,以便及时处理所有问题

    这两种情况下都有很多代码示例,但AWS lambda可能会有更多(警告-基于30秒的谷歌搜索)


    实际上,您还没有将其作为一个选项,但Cloudinary将动态地进行图像处理(正如您在介绍中所述)。这意味着您实际上不需要创建和保存缩略图,只需调用url中指定大小的原始图像即可。你能忍受这样的耽搁吗?大多数时候几乎认不出来。你能承受这样的代价吗?无论是钱还是用光了你的免费信用。

    从我看到的情况来看,你不需要node.js或cloudinary,请参阅@madalinivascu我更关心我的3个选项。你认为上面提到的三种方法中哪一种更好?