gpt4 book ai didi

ruby-on-rails - Rails 3.2 流媒体

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:53 26 4
gpt4 key购买 nike

我正在从 Rails 3.2 进行流式下载 (CSV),并且遇到初始页面请求需要很长时间的问题。以下 Controller 代码说明了我的问题:

      self.response_body = Enumerator.new do |y|
10_000_000.times do
y << "Hello World"
end
end

有了上面的内容,响应看起来确实像是流式传输(来自可以支持它的服务器......在我的例子中是 Unicorn)。也就是说,在它开始流式传输之前,它挂起的时间比我想要的要长得多。如果我将其更改为以下内容,它会启动得更快:

      self.response_body = Enumerator.new do |y|
1000.times do
y << "Hello World"
end
end

我的理解是响应应该从循环的第一次迭代开始,但似乎较大的循环导致初始加载时间延长。如果每次迭代都在发生时输出,那么启动流式传输过程是否应该花费相同的时间,而不管总共有多少次迭代???

感谢您提供的任何见解!

编辑:

这是对我正在尝试的技术的解释。也许我误解了或错过了一步?: http://facebook.stackoverflow.com/questions/3507594/ruby-on-rails-3-streaming-data-through-rails-to-client/4320399#4320399

编辑:

认为可能是 Rack-Cache 导致了我的问题...我可以针对个别请求将其关闭吗?

编辑并解决:

我对 Rack-Cache 的看法是错误的。我只需要在我的回复中添加 self.response.headers['Last-Modified'] = Time.now.ctime.to_s

最佳答案

经过编辑的问题原来包含我需要的答案。将其作为答案张贴在这里

让 Rack 处理程序正确流式传输的答案显然是在响应中添加 Last-Modified header :

self.response.headers['Last-Modified'] = Time.now.ctime.to_s

关于ruby-on-rails - Rails 3.2 流媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com