我有一个 Rails 应用程序,当用户从网络调用一个操作时,heroku 应用程序会生成一张随机图像,将该图像上传到 S3,并向用户返回该图像的公共(public) url(存储在 s3 中)。 .
“将该图像上传到 S3”需要很长时间,一个 27kb 的文件需要 20 秒,这是不可能的......我真的不知道如何解决这个问题,因为它正在工作,正在上传到 s3 但占用太多...
我正在考虑将图像存储在 Rails 应用程序的 tmp 文件夹中,但我不知道在被删除之前会在那里保存多久......有什么想法吗?
谢谢!
最佳答案
如果图像不是临时的,则不应将它们存储在 Heroku 上,因为当 dyno 变为非事件状态时它们将被删除。
我认为您应该研究将上传到 s3 的操作移至异步后台作业。有几个可用的选项:DelayedJob、Resque 和 Sidekiq 是一些更流行的后台处理功能。您还必须在 Heroku 上添加一个工作人员来处理您的后台作业。
通过将上传移至后台作业,您的用户将不会有漫长的等待时间,因为图像上传过程将单独完成。
关于ruby-on-rails-3 - Heroku 上传到 S3 需要太多时间(载波和雾),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057621/