【问题标题】:Render EJS and save it to Redis渲染 EJS 并将其保存到 Redis
【发布时间】:2014-09-24 07:53:29
【问题描述】:

在我的 Node-Express 应用程序中,我使用 Postgre 作为主要数据,使用 Redis 作为缓存系统。

当访问者请求 url 时,我的应用程序将 json 请求到 Redis。如果不可用,请向 Postgre 发出请求,将 json 保存到 Redis,然后渲染 EJS 模板。对同一个url的下一个请求,我从Redis获取json并渲染模板。

现在我想将完整渲染的模板而不是 json 保存到 Redis 以节省 CPU 使用率。我试过这个技巧,但没有奏效:

Render ejs file in node.js

任何想法或建议如何做到这一点?

提前感谢您的帮助。

【问题讨论】:

    标签: node.js express ejs


    【解决方案1】:

    Express API 参考表明res.render() 接受回调作为最后一个参数。该回调使用(err, html) 调用,因此只需传入一个回调并将(字符串)html 存储到redis 中。

    【讨论】:

    • 您的回答对我很有帮助。现在我可以保存到 Redis 甚至打印到控制台渲染的 HTML ......但是用户得到了超时。显然没有将呈现的模板响应发送到浏览器。这就是我的函数现在的样子: res.render('home.ejs',{ host: appConfig.app.url + '/' }, function(err,html) { if (err) return console.error('Error运行查询',err); redis.setex(rediskey,redisexp_2h,String(html)); console.log(html); });
    • 是的,当您添加回调时,会停止对客户端的自动响应。所以你必须在回调中手动执行res.send(html);。
    猜你喜欢
    • 2016-12-17
    • 2021-02-03
    • 2016-03-06
    • 2016-03-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2012-05-08
    相关资源
    最近更新 更多