2014-09-23 76 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