From 633eb5ad9b4faefd500624b6fa65a0372be82948 Mon Sep 17 00:00:00 2001 From: Shane Tomlinson <stomlinson@mozilla.com> Date: Fri, 13 Jan 2012 12:21:03 +0000 Subject: [PATCH] Cache off the templates once they are created. close #899 --- resources/static/shared/renderer.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/resources/static/shared/renderer.js b/resources/static/shared/renderer.js index 4b66dafa0..041974640 100644 --- a/resources/static/shared/renderer.js +++ b/resources/static/shared/renderer.js @@ -7,11 +7,12 @@ BrowserID.Renderer = (function() { "use strict"; var bid = BrowserID, - dom = bid.DOM; + dom = bid.DOM, + templateCache = {}; - function getTemplateHTML(body, vars) { + function getTemplateHTML(templateName, vars) { var config, - templateText = bid.Templates[body]; + templateText = bid.Templates[templateName]; if(templateText) { config = { @@ -21,21 +22,27 @@ BrowserID.Renderer = (function() { else { // TODO - be able to set the directory config = { - url: "/dialog/views/" + body + ".ejs" + url: "/dialog/views/" + templateName + ".ejs" }; } - var html = new EJS(config).render(vars); + var template = templateCache[templateName]; + if(!template) { + template = new EJS(config); + templateCache[templateName] = template; + } + + var html = template.render(vars); return html; } - function render(target, body, vars) { - var html = getTemplateHTML(body, vars); + function render(target, templateName, vars) { + var html = getTemplateHTML(templateName, vars); return dom.setInner(target, html); } - function append(target, body, vars) { - var html = getTemplateHTML(body, vars); + function append(target, templateName, vars) { + var html = getTemplateHTML(templateName, vars); return dom.appendTo(html, target); } -- GitLab