2015-06-07 56 views
7

Framework:node.js/express.js/Jadenode.js/Jade - 如何預先編譯jade文件並緩存它?

問題:在生產env中,當一個jade文件通過express呈現時,jade cache會這樣,所以未來渲染速度會更快。

當我啓動的Node.js應用程序,我怎麼能預先編譯(或)預渲染(如預熱)中的所有文件玉所以它已在緩存中的請求時開始進來......

我可以使用文件夾遞歸,我只需要知道如何預編譯(或)預渲染。

這可能嗎?

回答

6

玉石有模板的預編譯和緩存內置。

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

在哪裏寫這個代碼? –

+0

無論你喜歡什麼......你都可以直接從高速路由中調用'jade.renderFile',但是我懷疑如果你使用玉作爲快速查看引擎,它會利用內置的緩存。 –

1

如果你不使用任何參數,可以直接編譯玉模板用HTML或咕嚕大口,並使其監視文件修改

在命令行試試: jade view/map-beacons.jade -D

如果你確實需要使用參數,我會用Andrew Lavers的答案。

compileFile返回你可以用它來傳遞參數,即fn({ myJsVar: 'someValue' })

還有在命令行客戶的選擇,但我沒有找到它的任何使用功能: jade view/map-beacons.jade -cD

0

我這樣做的解決方案,這個代碼之外http.createServer功能

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

並且當返回視圖

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

時使用此解決方案的服務器回報指數1ms的 但沒有150毫秒到400毫秒

結果之間的解決方案服務器回報指數:

圖片1緩存 enter image description here

圖片2無緩存 enter image description here

相關問題