【问题标题】:Very slow file upload in Rails on localhost在本地主机上的 Rails 中文件上传非常慢
【发布时间】:2013-02-01 22:44:53
【问题描述】:

我使用carrierwave 和jQuery 文件上传。我尝试在本地主机上上传文件。 Rails 基准测试表明总时间为几毫秒:

但这次在所有浏览器中都成长为令人难以置信的价值! 这是来自 chrome 的示例:

文件大小约为 1MB

【问题讨论】:

  • 在浏览器/javscript 中花费的所有时间。您要上传什么类型的文件?你的 jQuery 代码是什么样的?如果适用,请查看github.com/blueimp/jQuery-File-Upload/issues/1450
  • 类型无关紧要。有图像、pdf、txt 等。我从示例中获得的 jQuery 代码。我认为,这不是 jquery 问题。因为当 rails 结束他的工作并以“待处理”状态上传文件时,ruby 进程会吃掉我所有的 CPU,而待处理状态消失。更大的文件大小 - 更多时间以异常规模上传。
  • 你看过Completed 406 Not Acceptable的行了吗?您的 jquery 是否正确处理了这个答案?
  • 我也有类似的问题。文件上传到服务器后,Rails 会占用 100% 的 CPU 并需要很多秒才能响应。

标签: jquery ruby-on-rails ruby file-upload


【解决方案1】:

你可以创建一个中间件,直接插入到Rack之前,比如:

class MultipartBufferSetter

  def initialize(app)
    @app = app
  end

  def call(env)
    env.merge!(Rack::RACK_MULTIPART_BUFFER_SIZE => 100*1024*1024)
    @app.call(env)
  end

end

然后:

config.middleware.insert_before "Rack::Runtime", "MultipartBufferSetter"

您可以找到更多信息here

希望有效果

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2016-10-05
    • 2020-03-29
    • 2019-02-03
    • 1970-01-01
    • 2012-01-22
    • 2016-05-21
    • 2015-07-08
    相关资源
    最近更新 更多