翻译--Blazing fast node.js: 10 performance tips from LinkedIn Mobile

转载 2013年12月05日 14:16:24

1.避免使用同步代码:

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

code 的github地址

2.关闭sockect池:

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

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

code的github 地址

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

4.在客户端渲染页面

5.使用gzip压缩

6.并行

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

7.session 空闲

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

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

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

8.使用二进制模块

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

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

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

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

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

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

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

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

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

Blazing fast node.js: 10 performance tips from LinkedIn Mobile

In a previous post, we discussed how we test LinkedIn's mobile stack, including our Node.js mobile ...
  • macyang
  • macyang
  • 2011年12月06日 22:50
  • 1435

Tips for optimizing mobile graphic performance

Tips for optimizing mobile graphic performance
  • cnjet
  • cnjet
  • 2016年03月21日 17:27
  • 166

Deep Learning on Mobile Device

Papers_ ** DeepSense: A GPU-based Deep Convolutional Neural Network Framework on Commodity Mobile De...
  • omnispace
  • omnispace
  • 2017年02月08日 07:03
  • 933

fast-rcnn论文翻译

由于本人英语能力有限,翻译得不起当的地方请各位指教。谢谢!
  • qq_14839543
  • qq_14839543
  • 2017年01月14日 09:27
  • 3321

Language Learning Tips

Language Learning Tips print buttonPrinter Friendly VersionLearning to communicate in another langua...
  • henrybai
  • henrybai
  • 2008年07月02日 14:05
  • 893

【论文翻译】Fast R-CNN

Fast R-CNNRoss Girshick Microsoft Research rbg@microsoft.com摘要本文提出了一种快速的基于区域的卷积网络方法(fast R-CNN)用...
  • xiaqunfeng123
  • xiaqunfeng123
  • 2017年12月05日 09:24
  • 440

High Quality with High Performance UE4 Mobile Game

1. Target Configuration & Target Quality Hardware will limit maximum possible. Low end hardware c...
  • cnjet
  • cnjet
  • 2017年06月18日 17:06
  • 854

Top 10 WPF Performance Tips

Windows Presentation Foundation provides a very confortable way to develop rich user experiences. A ...
  • kissjob
  • kissjob
  • 2010年09月15日 16:19
  • 811

fast-rcnn/README.md翻译--适合新手

尽管原作者Ross Girshick的说明已经非常详细,我每次看英文的fast-rcnn/README.md感觉费眼(英文水平还没有到信手捏来的娴熟程度),想来若能翻译成中文便真真是极好的。由于水平有...
  • u011511601
  • u011511601
  • 2016年05月15日 16:20
  • 1141

10 Tips for Flex Application Performance

Were going to keep this post lean and mean, and get down tobusiness with 10 Tips that will keep your...
  • dengxingbo
  • dengxingbo
  • 2010年02月01日 23:57
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:翻译--Blazing fast node.js: 10 performance tips from LinkedIn Mobile
举报原因:
原因补充:

(最多只允许输入30个字)