2014-09-23 38 views
1

在我的節點,快速的應用程序我使用Postgre作爲主要的數據和Redis的作爲緩存系統。渲染EJS並保存到Redis的

當訪問者請求的網址,我的應用程序請求的JSON到Redis的。如果不可用,請向Postgre發送請求,將json保存到Redis,然後渲染EJS模板。接下來請求相同的url,我從Redis獲取json並呈現模板。

現在我想保存到Redis的完整呈現的範本,而非JSON的節省CPU使用率。我想這招,但沒有奏效:

Render ejs file in node.js

任何意見或建議,該怎麼辦呢?

在此先感謝您的幫助。

回答

2

捷運API參考表明res.render()接受回調作爲最後一個參數。該回調函數與(err, html)一起調用,因此只需傳入回調函數並將(字符串)html存儲到redis中。

+0

你的答案的工作非常適合我。現在,我可以保存到Redis,甚至可以打印以控制呈現的HTML ...但用戶會得到超時。顯然不會將呈現的模板響應發送到瀏覽器。 這就是我的函數現在的樣子: res.render( 'home.ejs',{ 主持人:appConfig.app.url + '/' }, 功能(ERR,HTML) { 如果( ERR)返回console.error( '錯誤運行的查詢',ERR); redis.setex(rediskey,redisexp_2h,字符串(HTML)); 的console.log(HTML); }); – junihh 2014-09-24 14:53:21

+1

是的,當您添加回調時,會停止對客戶端的自動響應。所以你必須在回調中手動執行'res.send(html);'。 – mscdex 2014-09-24 15:04:33