【问题标题】:Flushing Rails template output刷新 Rails 模板输出
【发布时间】:2015-01-05 02:07:59
【问题描述】:

我发现 Rails 会等到整个视图在服务器上计算完毕后才会启动响应并立即转储所有内容。理想情况下,该页面应在服务器工作时逐步填充。

为了检查这一点,我创建了一个新的 Rails (4.1) 项目,生成了一个虚拟资源,并在其视图模板中间添加了 。结果是 nothing 输出了 10 秒 - Chrome 的网络面板仅显示等待接收到的零字节。也许是因为它是在开发模式下运行的 WEBrick,但我在 Unicorn 上看到了类似的东西(在开发和生产中)。

所以我的问题是如何确保在 Rails 中逐步刷新内容。理想情况下它应该自动发生(this post implies that's the intention 回到 Rails 3.1 中),但在这个简单的例子中,没有 _content_for_)但如果有必要,我愿意添加一些 flush() 调用或其他任何东西。

【问题讨论】:

  • this 你在找什么? (使用render stream: true
  • 是的,就是这样。我之前假设流媒体只是用于长时间运行的响应(即live)。您能否将其添加为答案,我会接受。

标签: ruby-on-rails performance templates flush ruby-on-rails-4.1


【解决方案1】:

正如 cmets 中所说,这是在 Rails 中添加的,但不是默认设置:您需要通过将 stream 选项指定为 render 来触发此行为:

render stream: true

可以在here找到此功能的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 2018-05-04
    • 2014-08-15
    • 2015-06-14
    • 2010-09-28
    • 2012-06-23
    • 2011-04-03
    • 2011-02-19
    相关资源
    最近更新 更多