Amazon S3和jqueryfileupload插件的图像上传性能问题

我有另一个亚马逊的问题,它与文件uploads有关。我正在使用jqueryFileUpload和amazon API将文件上传到亚马逊S3。我已成功上传它,但它涉及一个技巧。
我必须将图像存储在我的服务器上,然后使用S3的putObjectFile方法将其从那里移到S3。现在该插件具有很好的function来裁剪/调整图像,我一直在使用它们。现在我整合了插件使用AWS,我面临上传的性能问题 。上传时间比平时长,这引发了我们使用AWS S3而不是传统方式的问题。
我不得不对我的UploadHandler.php文件进行更改以使其工作。这些是所做的更改。我将一部分AWS上传代码添加到735到750行的文件中

  $bucket = "elasticbeanstalk-2-66938761981"; $s3 = new S3(awsAccessKey, awsSecretKey); $response = $s3->putObjectFile($file_path,$bucket,$file->name,S3::ACL_PUBLIC_READ); $thumbResponse = $s3->putObjectFile('files/thumbnail/'.$file->name,$bucket,'images/'.$file->name,S3::ACL_PUBLIC_READ); //echo $response; //echo $thumbResponse; if ($response==1) { //echo 'HERER enter!!'; } else { $file->error = "Something went wrong while uploading your file... sorry."; } return $file; 

这是git上s3类的链接。 正常上传到我当前的服务器(不是亚马逊),相同的图像上传15秒 ,但在亚马逊S3上需要大约23秒 ,我无法找到更好的解决方案。我必须将图像存储在我的服务器上上传到S3,因为我不确定我是否可以动态处理它们并直接上传到S3。
任何人都可以建议正确的方法来解决这个问题吗?是否有可能将图像大小调整到内存中的不同大小并直接上传到S3,避免了将其保存到我们服务器的开销?如果有,任何人都可以指导我朝着正确的方向前进吗?
谢谢你的关注。

我相信大约8秒是创建不同大小的图像版本的开销。 您可以采取不同的方法来消除上传时resize的开销。 基本思想是允许上传脚本完成执行并返回响应,并将resize过程作为单独的脚本进行。

我想建议以下方法:方法1.上传期间不要resize! 只有在第一次请求时才会动态创建已resize的版本,并将生成的图像缓存以便直接用于以后的请求。 我在Stackoverflow中的其他一些线程中看到了一些Amazon CloudFront的提及。

方法2.在上载原始图像后,调用用于创建已resize的版本的代码作为单独的异步请求。 缩放版本可用延迟。 因此,编写必要的代码以在网站中显示一些占位符图像,直到缩放版本可用。 您将不得不找出一些方法来确定缩放版本是否可用(例如,检查文件是否存在,或者在数据库中设置一些标志)。 如果您想尝试一下,可以在此处提出一些制作异步cURL请求的方法。

我认为这两种方法都具有同等程度的复杂性。

其他一些方法被建议作为另一个问题的答案 。