当我将图像(在Amazon S3服务器上)从相机上传到Heroku应用程序时,照片可以说超过2.5MB,有时候应用程序在30秒内没有处理,我在屏幕上看到警告有关应用程序错误的消息。
这不是非常人性化的行为,如何避免这种行为?我现在可以买一个额外的dyno,但我不确定这是一个解决方案。对于文件上传,我使用Paperclip gem。
如何解决这种情况,当用户上传时,假设图像大于3MB?
答案 0 :(得分:0)
你可以做几件事:(从最好到最差的顺序)
如果您需要对图像进行大量后处理(例如调整大小),您可以使用“延迟作业”在工作器上完成所有处理。通过这种方式,您可以更快地获得响应,但图像的备用或调整大小版本不会立即可用,只有:original
。这里有一个教程:http://madeofcode.com/posts/42-paperclip-s3-delayed-job-in-rails
您可以使用Unicorn或其中一个表兄弟。虽然它可能无法自行解决图像上传问题,但它允许您调整请求超时所需的时间。作为额外的奖励,它还应该加快你的应用程序的其余部分。
您可以尝试将Carrier Wave与CarrierWaveDirect一起使用,而不是使用回形针。这是在黑暗中拍摄的,因为我从来没有亲自使用它,但据说它“更好”,这可能意味着更快?也许?听起来它的工作方式与带有延迟作业的Paperclip类似。