图像上传和操作API为更高分辨率的图像花费更多时间

时间:2015-09-03 12:00:52

标签: javascript node.js image amazon-web-services amazon-s3

我关注图片 upload以及S3 bucket上的manipulation的当前流程如下:

  1. 图片已上传到S3 Bucket
  2. S3 Bucket
  3. 中检索已保存图像的图像缓冲区
  4. 使用gmimagemagick npm模块调整图像缓冲区的大小。
  5. 使用原始扩展名将已调整大小的图像缓冲区保存为S3 Bucket
  6. 中的新图像

    随着image size增加API response时间,API需要 3 秒,以便在执行300 KB图像的上述工作流程时给出响应对于15 MB或更多图像,30秒。

    我不知道我的流量是否正确。我的要求是我需要在上传15个或更多MB图像时缩短API响应时间。有人可以建议我如何实现这个目标吗?

    修改

    要明确我要上传一个15 MB的文件,我将其从Advanced Rest Client(Chrome插件)发送到我的API。图像文件当前存在于我的本地系统中。我目前正在制作jpgpng张图片。我希望通过减小宽高比来将图像调整为更大和更小的尺寸。我编写的API在Node JS中,遵循上述工作流程。

1 个答案:

答案 0 :(得分:0)

似乎从S3上传和下载大图片需要花费大量时间。

您可以进行一些优化:

  • 尝试使用graphicsmagick软件包,在常见情况下,它会比imagemagick(最新版本)更快
  • 之前调整大小/优化操作 上传到S3并在最后一步上传

  • 如果不可能 - 尝试使用Streams进行下载 - 调整大小 - 上传到S3。只需将请求流传递给gm模块并将管道写入AWS S3

  • 从Amazon EC2 infastructure进行图像优化,它具有 S3
  • 的网络性能非常高