2015-05-18 45 views
3

在我的項目中,我使用ERB作爲模板引擎。我們有一個使用ERB模板的頁面,它在5-7秒內加載。Rails erb vs gsub動態模板性能

我們將其改爲動態模板的同一頁面,模板值存儲在數據庫中。

樣品模板

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

在過去的動態模板施加的實際值,我已經使用了GSUB。這種情況下,同一頁面需要16-20秒的加載時間。我在動態模板上使用了17個gsub。

  1. erb渲染速度如何? (因爲我在動態模板之前和之後使用相同的內容 )
  2. 有什麼方法可以提高性能嗎?

注: 與'gsub'方法相比,'sub'方法速度快。但在我的情況下,我需要使用全局子(gsub)。

+0

我們無法確定兩者之間的性能差異,而沒有其中之一。 –

+0

2.也許你應該嘗試緩存,然後再嘗試重新發明輪子? http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching – max

回答

0

就我而言,整個頁面就像一個帶有20個標籤的動態模板。在這種情況下,gsub不是取代20個標籤的正確解決方案。

客戶端: 我已經使用了名爲Handlebar.js的客戶端模板引擎。使用這個我的網頁以正常的速度加載。

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

0

如果您存儲在數據庫中的模板,那麼你可以使用合適的工具,使它們。如果是erb,那麼只需使用ERB,不要手動使用gsub變量。 erb比手動gsub快得多的原因是因爲erb模板被編譯爲ruby代碼(如「Foo <%= bar%>」變成「Foo」+ bar)並執行。

據我所知,你想在數據庫中存儲你的模板,並將它們呈現在服務器和客戶端。您可以使用mustache,因爲它與框架無關並且可以安全地在服務器上運行。