【问题标题】:Rails erb vs gsub dynamic template performanceRails erb vs gsub 动态模板性能
【发布时间】:2015-05-18 07:53:10
【问题描述】:

在我的项目中,我使用 ERB 作为模板引擎。我们有一页使用了 ERB 模板,它在 5-7 秒内加载完毕。

我们把它改成动态模板的同一个页面,模板值存储在数据库中。

示例模板

    <p> {{name}} </p>
    <p> {{address}} </p>
    <p> {{mobile number}} </p>

为了在动态模板上应用实际值,我使用了 gsub。这种情况下,同一页面的加载时间为 16-20 秒。我在动态模板上使用了 17 gsub。

  1. erb 渲染有多快? (因为我使用的是相同的内容 动态模板前后)
  2. 有什么方法可以提高性能?

注意: 与 'gsub' 方法相比,'sub' 方法速度更快。但就我而言,我需要使用全局子 (gsub)。

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 erb gsub


【解决方案1】:

在我的例子中,整个页面就像一个有 20 个标签的动态模板。在这种情况下,gsub 不是替换 20 个标签的正确解决方案。

客户端: 我使用了名为 Handlebar.js 的客户端模板引擎。使用这个我的页面以正常速度加载。

服务器端: https://github.com/Shopify/liquid

【讨论】:

    【解决方案2】:

    如果您将模板存储在数据库中,那么您可以使用适当的工具来呈现它们。如果是 erb,那么只需使用 ERB,不要手动 gsub 变量。 erb 比手动 gsub 快得多的原因是因为 erb 模板被编译为 ruby​​ 代码(如 "Foo " 变为 "Foo " + bar)并执行。

    据我了解,您希望将模板存储在数据库中并在服务器和客户端上呈现它们。为此,您可以使用 mustache,它与框架无关并且可以安全地在服务器上运行。

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2014-03-11
      • 2023-03-04
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2011-02-09
      相关资源
      最近更新 更多