node.js / Jade - 如何预编译jade文件并缓存它?

时间:2015-06-07 01:59:55

标签: node.js express pug

框架:node.js / express.js / Jade

问题:在生产环境中,当一个玉文件由express,jade缓存呈现时,所以未来的渲染会更快。

当我启动node.js应用程序时,如何预编译(或)预呈现(如预热)所有jade文件,以便在请求开始进入时它已经在缓存中...

我可以使用文件夹递归,我只需要知道如何预编译(或)预渲染。

这可能吗?

3 个答案:

答案 0 :(得分:6)

Jade内置了模板预编译和缓存。

http://jade-lang.com/api/

只需为cache: true指定jade.compileFile选项,然后遍历所有模板文件。

var options = {cache: true};

// iterate/recurse over your jade template files and compile them
jade.compileFile('./templates/foo.jade', options);


// Jade will load the compiled templates from cache (the file path is the key)
jade.renderFile('./templates/foo.jade');

答案 1 :(得分:1)

如果您不使用任何参数,可以使用grunt或gulp将jade模板直接编译为HTML,并使其监视文件修改

从命令行尝试: jade view/map-beacons.jade -D

如果您确实需要使用参数,我会使用像Andrew Lavers这样的答案。

compileFile会返回一个可用于传递参数的函数,例如fn({ myJsVar: 'someValue' })

命令行中还有一个客户端选项,但我没有找到任何用途: jade view/map-beacons.jade -cD

答案 2 :(得分:0)

我做这个解决方案,这个代码在http.createServer函数之外

let cache_index=jade.renderFile('index.jade');

以及何时返回视图

res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');    
res.end(cache_index);

使用此解决方案服务器时返回索引为1ms 但没有解决方案服务器返回索引在150ms到400ms之间

结果:

带缓存的图片1 enter image description here

没有缓存的图片2 enter image description here