我有一个 nodejs 应用程序,其中 express 的 res.render 方法以阻塞方式占用大约 400 毫秒。我如何处理它以非阻塞方式执行?我的 apache 基准测试需要 12 秒来执行大约 30 个并发请求。我如何以更好的方式实现这一点?

var start = +new Date;
//fetch data from redis
console.log('time taken to fetch data from redis ' + (+new Date - start)); //30 ms
res.render('some_jade_view', params);
console.log('time taken to render data ' + (+new Date - start)); //530 ms

我试过 process.nextTick 但它没有多大帮助,ab 结果是一样的。

最佳答案

我认为你真的应该看看 https://github.com/caolan/async

直接来自 Async 的 repo:



干杯。

编辑: 我不确定以异步方式呈现您的 View 是否真的能帮助您减少时间。您可能希望在客户端实现一个流,以便在数据出现时获取和模板化数据。你可以使用像 Angular 这样的前端框架,或者手动完成。

关于javascript - 以异步方式执行 Express res.render,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18977996/

10-16 09:57