我有一个 Nodejs 应用程序,其中res.render
Express 方法以阻塞方式花费大约 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
I tried process.nextTick
但并没有多大帮助,ab结果都是一样的。
我认为你真的应该看看https://github.com/caolan/async https://github.com/caolan/async.
直接来自 Async 的存储库:
Async 是一个实用程序模块,提供直接、强大的
用于处理异步 JavaScript 的函数。 (...)
Async 提供了大约 20 个函数,其中包括常见的“功能性”
嫌疑人(map、reduce、filter、each…)以及一些常见模式
用于异步控制流(并行、串行、瀑布......)。全部
这些函数假设您遵循提供的 Node.js 约定
单个回调作为异步函数的最后一个参数。
Cheers.
Edit:我不确定以异步方式渲染视图是否真的能帮助您减少时间。您可能希望在客户端实现一个流,用于在数据出现时获取数据并对其进行模板化。您可以使用像这样的前端框架Angular http://angularjs.org/为此,或者手动执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)