本文介绍了Node.js五大应用性能技巧,分享给大家,具体如下:

一、实现一个反向代理服务器
相比大多数应用服务器,Node.js 可以很轻松的处理大量的网络流量,但这并不是 Node.js 的设计初衷。
如果你有一个高流量的站点,提高性能的第一步是在你的 Node.js 前面放一个反向代理服务器。这可以保护你的 Node.js 服务器免于直接暴露在网络中,而且可以允许你灵活的使用多个应用服务器做负载均衡和静态文件缓存。
使用 NGINX 在一个已经存在的服务器前做反向代理,作为 NGINX 的一个核心应用,已经被用于全世界成千上万的站点中。
下面是使用 NGINX 作为反向代理服务器的优点:
简化了权限处理和端口分配
更高效的处理静态资源
更好的处理 Node.js 崩溃情况
缓解 DoS 攻击的影响
注:这篇文章解释如何在 Ubuntu 14.04 或者 CentOS 环境中使用 NGINX 做反向代理服务器,而且使用 NGINX 在 Node.js 前做反向代理服务器是有效的。
二、缓存静态文件
随着流量的增长,以 Node 为基础的服务器开始显现压力。这时,你可能想做两件事:
使用更多的 Node.js 服务器。
在多个服务器间做负载均衡
这其实很简单,NGINX 一开始就是作为反向代理服务器来实现的,这使其很容易做缓存和负载均衡等。
Modulus 的网站有一篇有用的文章,介绍了使用 NGINX 做 Node.js 反向代理服务器的性能提升。只使用 Node.js 时,作者的网站每秒能处理 900 个请求。 使用 NGINX 作为反向代理服务器来处理静态文件后,该网站每秒可处理超过 1600 个请求,接近两倍的性能提升。
下面是该网站做上述性能提升的配置代码:
nginx
server {
listen 80;
server_name static-test-47242.onmodulus.net;
root /mnt/app;
index index.html index.htm;
location /static/ {
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass http://node-test-45750.onmodulus.net;
}
}
三、实现 Node.js 负载均衡
最终目标— Node.js 运行多个应用服务器,并在这些服务器之间均衡负载。
Node.js 实现负载均衡是比较困难的,因为 Node.js 允许浏览器端 JavaScript 和 服务器端 Node.js 通过 json 做数据交互,这就意味着同一个客户端可以反复的访问一个特定的应用服务器,而且多个应用服务器之间共享 session也是比较困难的。
NGINX 实现无状态负载均衡的方式:
Round Robin. 新的请求去列表中的下一个服务器
Least Connections. 新的请求去连接数最少的服务器
IP Hash. 根据客户端 IP 的 hash 值指定服务器
只有 IP Hash 这一种能够可靠的把客户端请求代理到同一台服务器的方式才能使 Node.js 应用服务器受益。
四、代理 WebSocket 连接
所有版本的 HTTP 都是为客户端主动请求服务器来设计的,而 WebSocket 可以实现服务器主动向客户端的消息推送。
WebSocket 协议使客户端和服务器端的稳定交互更加简单,同时也提供更小的交互延迟。当你需要一个全双工的通讯,即客户端和服务器都可以在需要时主动发起消息请求,那么使用 WebSocket 就对了。
WebSocket 协议有健全的 JavaScript 接口,因此也原生适合用 Node.js 作为应用服务器。当连接数上升,使用 NGINX 在客户端和 Node.js 服务器端做代理来缓存静态文件和负载均衡就变得非常有意义。
五、实现 SSL/TLS 和 HTTP/2
越来越多的网站使用 SSL/TLS 来保证信息交互的安全性,你也可以考虑是否要把它加入到你的网站中,但如果你决定要做,那么 NGINX 有两种方式来支持它:
你可以使用 NGINX 做 SSL/TLS 反向代理,Node.js 服务器使用解密后的请求然后返回未加密的内容给 NGINX。
使用 HTTP/2 可以抵消 SSL/TLS 带来的性能开销,NGINX 支持 HTTP/2, 所以你可以同时使用 HTTP/2 和 SSL 代理请求,而你的 Node.js 服务器不需要做任何更改。
在实现阶段你需要更新 Node.js 配置文件中的 URL, 在你的 NGINX 配置文件中使用 SPDY 或者 HTTP/2 优化连接。添加 HTTP/2 支持意味着支持 HTTP/2 的浏览器可以使用新的协议和你的应用交互,而老的浏览器继续使用 HTTP/1.x。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nodejs
# 性能
# 性能技巧
# VSCode提高 Node 和 Vue 开发效率的插件推荐
# 十大 Node.js 的 Web 框架(快速提升工作效率)
# 监控Nodejs的性能实例代码
# node中使用es6/7/8(支持性与性能)
# 提升node.js中使用redis的性能遇到的问题及解决方法
# 提高Node.js性能的应用技巧分享
# Node.js 的异步 IO 性能探讨
# nodejs的10个性能优化技巧
# 如何用Node.js编写内存效率高的应用程序
# 代理服务器
# 客户端
# 多个
# 负载均衡
# 你可以
# 要做
# 配置文件
# 连接数
# 都是
# 这一
# 如果你
# 是在
# 当你
# 并在
# 一台
# 很容易
# 要把
# 这就
# 给大家
# 五大
相关文章:
如何快速搭建高效可靠的建站解决方案?
红河网站制作公司,红河事业单位身份证如何上传?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何在阿里云购买域名并搭建网站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
如何选择CMS系统实现快速建站与SEO优化?
建站主机数据库如何配置才能提升网站性能?
如何选择网络建站服务器?高效建站必看指南
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
高性价比服务器租赁——企业级配置与24小时运维服务
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何快速上传建站程序避免常见错误?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
微信推文制作网站有哪些,怎么做微信推文,急?
兔展官网 在线制作,怎样制作微信请帖?
如何配置IIS站点权限与局域网访问?
TestNG的testng.xml配置文件怎么写
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
如何生成腾讯云建站专用兑换码?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
移民网站制作流程,怎么看加拿大移民官网?
如何通过IIS搭建网站并配置访问权限?
IOS倒计时设置UIButton标题title的抖动问题
图册素材网站设计制作软件,图册的导出方式有几种?
网站制作壁纸教程视频,电脑壁纸网站?
C#怎么使用委托和事件 C# delegate与event编程方法
如何在IIS中配置站点IP、端口及主机头?
建站上市公司网站建设方案与SEO优化服务定制指南
Swift中swift中的switch 语句
定制建站策划方案_专业建站与网站建设方案一站式指南
如何快速搭建安全的FTP站点?
香港服务器租用每月最低只需15元?
如何彻底卸载建站之星软件?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
婚礼视频制作网站,学习*后期制作的网站有哪些?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
如何在阿里云服务器自主搭建网站?
如何在橙子建站上传落地页?操作指南详解
郑州企业网站制作公司,郑州招聘网站有哪些?
建站主机SSH密钥生成步骤及常见问题解答?
青岛网站建设如何选择本地服务器?
制作表格网站有哪些,线上表格怎么弄?
如何选择服务器才能高效搭建专属网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
微信h5制作网站有哪些,免费微信H5页面制作工具?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
山东云建站价格为何差异显著?
*请认真填写需求信息,我们会在24小时内与您取得联系。