Node.js Express的5个简单性能调整

Node.js彻底改变了Web开发, Express框架必须分享很多功劳。 Express可能不是最快或最先进的服务器选项,但几乎可以肯定它是最常用的服务器,每月下载量超过300万。

如果您什么也不做,Node.js和Express的运行速度将非常快。 但是,有许多简单的方法可以使Express 4.x运行得更快。

1.切换到生产模式

Express可以在多种模式下运行。 默认情况下,它假定开发模式提供异常堆栈跟踪和其他日志记录任务。 还有一种调试模式,可将消息记录到控制台,例如

DEBUG=express:* node ./app.js

在活动服务器上,可以通过切换到生产模式来显着提高性能。 这是通过设置实现NODE_ENV环境变量production 。 可以在启动Express应用程序之前在Windows的当前会话中对其进行设置:

set NODE_ENV=production

或Mac / Linux:

export NODE_ENV=production

启动时,Linux用户还可以在一行中设置NODE_ENV

NODE_ENV=production node ./app.js

理想情况下,您应该通过将export NODE_ENV=production添加到~/.bash_profile或适当的启动脚本中来配置环境。

2.启用GZIP

Express 4.x提供的最小功能可以通过中间件进行增强。 GZIP压缩是最不明显的缺失功能之一,它压缩了HTTP有效负载,因此浏览器可以在收据上对其进行扩展。 要添加GZIP,请使用npm安装压缩模块

npm install compression --save

(取决于您的设置,您可能需要在Mac / Linux上使用sudo多种解决方法 。)

在您的主应用程序启动文件中,包括压缩模块:

var compression = require('compression');

然后将其安装为第一个中间件功能(在其他Express .use方法之前):

// GZIP all assets
app.use(compression());

3.删除不必要的中间件

如果您使用Express Generator或类似过程生成了预构建的应用程序,请删除所有未使用的中间件模块。

例如,如果您不使用cookie,则可以删除cookie-parser模块或使用req.cookiesres.cookie来实现更简单的替代方法。

可能可以删除某些过程,例如在生产模式下调试输出,例如

if (app.get('env') !== 'production') {
  // debugging middleware in development only
  app.use(debuggerModule);
}

也就是说,最好保留serv-favicon 。 浏览器经常请求favicon.ico文件,并且该模块改进了缓存。

4.考虑一个更简单的模板引擎

Jade是许多Express安装的默认模板引擎,这是一个不错的选择。 但是,如果您乐于编写自己的HTML并且只需要基本的插值和评估,请考虑使用doT之类的轻量级替代方案,可以使用express-dot-engine模块将其作为Express中间件添加。

或者,您可以绕过模板引擎以获得更简单的响应,例如

app.get('/hello', function (req, res) {
  res.write('Hello!');
  res.end();
});

无论使用哪种模板引擎,请始终确保启用了视图缓存:

app.set('view cache', true);

5.记住要缓存!

与大多数基于服务器的应用程序不同,Node.js应用程序可永久运行。 因此,您可以一次设置频繁使用的变量,例如数据库连接对象,并在每个用户的每次请求期间重新使用它们。

该概念可以根据需要扩展。 通常,您可以缓存更多高使用率的项目,从而获得更好的性能。 例如,假设您的基于Express的CMS应用程序在主页上提供了指向您的五篇最新文章的链接。 该列表可以生成并存储在变量中,并且仅在发布新文章时更新。

奖金快速提示

需要更多吗?…

  • 考虑使用nginx提供静态内容并减轻Node.js和Express的负担。
  • 使用诸如Gulp之类的构建工具来最小化和连接HTML模板,CSS和JavaScript文件。
  • 限制使用会话变量。 用户会话数据通常存储在内存中,随着使用量的增长,这可能导致性能问题。 考虑仅使用ID,然后在请求期间从数据库中获取用户信息。
  • 将HTTP套接字的最大数目从五个增加到一个更大的数目,例如
    
      // use http/https as necessary
      http.globalAgent.maxSockets = 50;
    
  • 在可能的情况下,并行而不是依次调用阻塞操作的序列。
  • 避免在应用程序初始化之外的所有内容中使用同步阻塞调用。
  • 始终意识到,为一个用户运行的代码正在阻止为其他每个用户运行的代码。

您是否还有有关Node.js或Express的性能提示? 我很高兴在评论中听到他们的声音。

From: https://www.sitepoint.com/5-easy-performance-tweaks-node-js-express/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值