优化Node.js Web应用运行速度的10个技巧
Node.js受益于它的事件驱动和异步的特征,已经很快了。但是,在现代网络中只是快是不行的。如果你打算用Node.js开发你的下一个Web应用的话,那么你就应该无所不用其极,让你的应用更快,异常的快。本文将介绍10条,经过检验得知可大大提高Node应用的技巧。废话不多说,让我们逐条来看看。
1.并行
创建Web应用的时候,你可能要多次调用内部API来获取各种数据。比如说,假设在Dashboard页面上,你要执行下面这几个调用:
用户信息-getUserProfile().
当前活动-getRecentActivity().
订阅内容-getSubscriptions().
通知内容-getNotifications().
为了拿到这些信息,你应该会为每个方法创建独立的中间件,然后将它们链接到Dashboard路由上。不过问题是,这些方法的执行是线性的,上一个没结束之前下一个不会开始。可行解决案是并行调用它们。
如你所知由于异步性,Node.js非常擅长并行调用多个方法。我们不能暴殄天物。我上面提到的那些方法没有依赖性,所以我们可以并行执行它们。这样我们可以削减中间件数量,大幅提高速度。
我们可以用async.js来处理并行,它是一个专门用来调教JavaScript异步的Node模块。下面代码演示怎样用async.js并行调用多个方法的:
functionrunInParallel(){ async.parallel([ getUserProfile, getRecentActivity, getSubscriptions, getNotifications ],function(err,results){ //Thiscallbackrunswhenallthefunctionscomplete }); }
如果你想更深入了解async.js,请移步它的GitHub页面。
2.异步
根据设计Node.js是单线程的。基于这点,同步代码会堵塞整个应用。比如说,多数的文件系统API都有它们的同步版本。下面代码演示了文件读取的同步和异步两种操作:
//Asynchronous fs.readFile('file.txt',function(err,buffer){ varcontent=buffer.toString(); });
//Synchronous varcontent=fs.readFileSync('file.txt').toString();