2015-05-18 2 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. Как эрбирование выполняется быстро? (Потому что я использую тот же контент до и после динамического шаблона)
  2. Есть ли способ увеличить производительность?

Примечание: По сравнению с методом «gsub» метод «под» выполняется быстро. Но в моем случае мне нужно использовать глобальный sub (gsub).

+0

Мы не можем определить разницу в производительности между ними, не имея одного из них. –

+0

2. Возможно, вам нужно было попробовать кэшировать, прежде чем пытаться изобрести колесо? http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching – max

ответ

0

В моем случае вся страница похожа на динамический шаблон с 20 тегами. В этом случае gsub не является правильным решением для замены 20 тегов.

Сторона клиента: Я использовал механизм шаблонов клиентской стороны под названием Handlebar.js. Используя это, моя страница загружается с нормальной скоростью.

Server Side: https://github.com/Shopify/liquid

0

Если хранить шаблоны в базе данных, то вы могли бы использовать соответствующие инструменты, чтобы сделать их. Если это erb, тогда просто используйте ERB, не изменяйте переменные gsub вручную. Причина, по которой erb намного быстрее, чем ручной gsub, заключается в том, что шаблон erb скомпилирован в ruby-код (например, «Foo <% = bar%>» становится «Foo» + bar) и выполняется.

Как я понимаю, вы хотите хранить свои шаблоны в базе данных и отображать их как на сервере, так и на клиенте. Вы можете использовать mustache для этого, он является агностиком и безопасен для работы на сервере.

Смежные вопросы