博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
翻译--Blazing fast node.js: 10 performance tips from LinkedIn Mobile
阅读量:5319 次
发布时间:2019-06-14

本文共 1551 字,大约阅读时间需要 5 分钟。

1.避免使用同步代码:

// Good: write files asynchronouslyfs.writeFile('message.txt', 'Hello Node', function (err) {  console.log("It's saved and the server remains responsive!");}); // BAD: write files synchronouslyfs.writeFileSync('message.txt', 'Hello Node');console.log("It's saved, but you just blocked ALL requests!");

2.关闭sockect池:

  nodejs的http客户端会自动的使用sockect池,默认情况下,每一台主机限制你最多使用5个sockect连接,sockect重用能保持很多的资源能够在一定范围内重用,如果你想控制从相同主机取数据的大量请求,这会有很多的瓶颈。在这种情况下,一个很好的办法是提高maxSockets 的值或者是彻底的关闭sockect池

var http = require('http');var options = {.....};options.agent = false;var req = http.request(options)

3.不要使用nodejs 做静态资源存储

4.在客户端渲染页面

5.使用gzip压缩

6.并行

  试着去处理你的所有阻碍操作,也就是说,并行请求你的远程服务,数据库调用,文件访问,这个将会减少潜在的最慢的请求,而不是所有的在一个队列中的总和时间,为了保持比较好的控制回调和错误信息,我建议 框架去做工作流控制

7.session 空闲

  LinkedIn mobile 使用 框架控制请求和响应,很多的express 例子中都包含了如下的配置

app.use(express.session({ secret: "keyboard cat" }));

一般地,session 数据是存储在内存中,这个将会导致系统开销,特别是有很多的用户组,当然你也可以使用外部的session 存储,比如说MongoDB or Redis,但是这样做的话,就会导致远程请求session 数据的系统开销。当然,如果可能,最好的选项是不在服务端存储session数据。在express 框架中不要包含上述配置你将得到更好的性能。

8.使用二进制模块

  如果可能的话,尽量使用二进制模块,而不使用javascript 库,例如:当我们使用SHA模块转换的话,我们将看到有更好的性能。

// Use built in or binary modulesvar crypto = require('crypto');var hash = crypto.createHmac("sha1",key).update(signatureBase).digest("base64");

9.使用标准的V8而不是使用客户端的库

10.保持你的代码小而简洁

  时不时的问问自己这几个问题:

  1.我真的需要这个模块吗?

  2.我为什么要使用这个框架?

  3.这个系统开销值得吗?

  4.我是否可以用一个更简单的方式去实现这个?

 

翻译文章地址:http://engineering.linkedin.com/nodejs/blazing-fast-nodejs-10-performance-tips-linkedin-mobile

转载于:https://www.cnblogs.com/yupeng/p/3459145.html

你可能感兴趣的文章
鼠标悬停提示文本消息最简单的做法
查看>>
课后作业-阅读任务-阅读提问-2
查看>>
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
移动、联通和电信,哪家的宽带好,看完你就知道该怎么选了!
查看>>
Linux设置环境变量的方法
查看>>
Atitit.进程管理常用api
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
原生JavaScript第六篇
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>