以asynchronous方式执行Express res.render

我有一个nodejs应用程序,其中res.render方法是以约400毫秒的阻塞方式。 我如何处理这个以非阻塞的方式执行? 我的apache基准testing需要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的回购:

Async是一个实用程序模块,它为asynchronousJavaScript提供了直接,强大的function。 (……)

asynchronous提供了大约20个function,其中包括常见的“function”嫌疑人(地图,减less,过滤,每个…)以及一些常见的asynchronous控制stream模式(并行,系列,瀑布…)。 所有这些函数都假定您遵循提供单个callback的node.js约定作为asynchronous函数的最后一个参数。

干杯。

编辑:我不知道是否以asynchronous方式呈现您的视图真的会帮助你减less你的时间。 您可能希望在客户端实现一个数据stream,以获取并模拟数据。 你可以使用像Angular这样的前端框架,或者手动完成。