精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

讓你的Node.js應用跑得更快的10個技巧

開發(fā) 前端
如果你打算用 Node.js 開發(fā)你的下一個Web 應用的話,那么你就應該無所不用其極,讓你的應用更快,異常的快。本文將介紹 10 條,經(jīng)過檢驗得知可大大提高 Node 應用的技巧。廢話不多說,讓我們逐條來看看。

Node.js 受益于它的事件驅(qū)動和異步的特征,已經(jīng)很快了。但是,在現(xiàn)代網(wǎng)絡中只是快是不行的。如果你打算用 Node.js 開發(fā)你的下一個Web 應用的話,那么你就應該無所不用其極,讓你的應用更快,異常的快。本文將介紹 10 條,經(jīng)過檢驗得知可大大提高 Node 應用的技巧。廢話不多說,讓我們逐條來看看。

1. 并行

創(chuàng)建 Web 應用的時候,你可能要多次調(diào)用內(nèi)部 API 來獲取各種數(shù)據(jù)。比如說,假設在 Dashboard 頁面上,你要執(zhí)行下面這幾個調(diào)用:

  • 用戶信息 -getUserProfile().

  • 當前活動 -getRecentActivity().

  • 訂閱內(nèi)容 -getSubscriptions().

  • 通知內(nèi)容 -getNotifications().

為了拿到這些信息,你應該會為每個方法創(chuàng)建獨立的中間件,然后將它們鏈接到 Dashboard 路由上。不過問題是,這些方法的執(zhí)行是線性的,上一個沒結(jié)束之前下一個不會開始??尚薪鉀Q案是并行調(diào)用它們。

如你所知由于異步性,Node.js 非常擅長并行調(diào)用多個方法。我們不能暴殄天物。我上面提到的那些方法沒有依賴性,所以我們可以并行執(zhí)行它們。這樣我們可以削減中間件數(shù)量,大幅提高速度。

我們可以用 async.js 來處理并行,它是一個專門用來調(diào)教 JavaScript 異步的 Node 模塊。下面代碼演示怎樣用 async.js 并行調(diào)用多個方法的:

  1. function runInParallel() {  
  2.   async.parallel([  
  3.     getUserProfile,  
  4.     getRecentActivity,  
  5.     getSubscriptions,  
  6.     getNotifications  
  7.   ], function(err, results) {  
  8.     //This callback runs when all the functions complete  
  9.   });  

如果你想更深入了解 async.js ,請移步它的 GitHub 頁面。

2. 異步

根據(jù)設計 Node.js 是單線程的。基于這點,同步代碼會堵塞整個應用。比如說,多數(shù)的文件系統(tǒng) API 都有它們的同步版本。下面代碼演示了文件讀取的同步和異步兩種操作:

  1. // Asynchronous  
  2. fs.readFile('file.txt'function(err, buffer) {  
  3.   var content = buffer.toString();  
  4. });  
  5.    
  6. // Synchronous  
  7. var content = fs.readFileSync('file.txt').toString(); 

不過要是你執(zhí)行那種長時間的阻塞操作,主線程就會被阻塞到這些操作完成為止。這大大降低你應用的性能。所以,最好確保你的代碼里用的都是異步版本 API,最起碼你應該在性能節(jié)點異步。而且,你在選用第三方模塊的時候也要很小心。因為當你想方設法把同步操作從你代碼中剔除之后,一個外部庫的同步調(diào)用會讓你前功盡棄,降低你的應用性能。

3. 緩存

如果你用到一些不經(jīng)常變化的數(shù)據(jù),你應該把它們緩存起來,改善性能。比如說,下面的代碼是獲取最新帖子并顯示的例子:

  1. var router = express.Router();  
  2.    
  3. router.route('/latestPosts').get(function(req, res) {  
  4.   Post.getLatest(function(err, posts) {  
  5.     if (err) {  
  6.       throw err;  
  7.     }  
  8.    
  9.     res.render('posts', { posts: posts });  
  10.   });  
  11. }); 

如果你不經(jīng)常發(fā)貼的話,你可以把帖子列表緩存起來,然后一段時間之后再把它們清理掉。比如,我們可以用 Redis 模塊來達到這個目的。當然,你必須在你的服務器上裝 Redis。然后你可以用叫做 node_redis 的客戶端來保存鍵/值對。下面的例子演示我們怎么緩存帖子:

  1. var redis = require('redis'),  
  2.     client = redis.createClient(nullnull, { detect_buffers: true }),  
  3.     router = express.Router();  
  4.    
  5. router.route('/latestPosts').get(function(req,res){  
  6.   client.get('posts'function (err, posts) {  
  7.     if (posts) {  
  8.       return res.render('posts', { posts: JSON.parse(posts) });  
  9.     }  
  10.    
  11.     Post.getLatest(function(err, posts) {  
  12.       if (err) {  
  13.         throw err;  
  14.       }  
  15.    
  16.       client.set('posts', JSON.stringify(posts));      
  17.       res.render('posts', { posts: posts });  
  18.     });  
  19.   });  
  20. }); 

看到了吧,我們首先檢查 Redis 緩存,看看是否有帖子。如果有,我們從緩存中拿這些帖子列表。否則我們就檢索數(shù)據(jù)庫內(nèi)容,然后把結(jié)果緩存。此外,一定時間之后,我們可以清理 Redis 緩存,這樣就可以更新內(nèi)容了。

4. gzip 壓縮

開啟 gzip 壓縮對你的 Web 應用會產(chǎn)生巨大影響。當一個 gzip 壓縮瀏覽器請求某些資源的時候,服務器會在響應返回給瀏覽器之前進行壓縮。如果你不用 gzip 壓縮你的靜態(tài)資源,瀏覽器拿到它們可能會花費更長時間。

在 Express 應用中,我們可以用內(nèi)建 express.static() 中間件來處理靜態(tài)內(nèi)容。此外,還可以用 compression 中間件壓縮和處理靜態(tài)內(nèi)容。下面是使用例:

  1. var compression = require('compression');  
  2.    
  3. app.use(compression()); //use compression   
  4. app.use(express.static(path.join(__dirname, 'public'))); 

5. 如果可以,在用客戶端渲染

現(xiàn)在有超多功能強勁的客戶端 MVC/MVVM 框架,比如說 AngularJS, Ember, Meteor, 等等,構(gòu)建一個單頁面應用變得非常簡單?;旧?,你只要公開一個 API,返回 JSON 響應給客戶端就可以了,而不需要在服務端渲染頁面。在客戶端,你可以用框架來組織 JSON 然后把它們顯示在 UI 上。服務端只發(fā)送 JSON 響應可以節(jié)省帶寬,改善性能,因為你不需要在每個響應里面都返回布局標記了,對吧,你只需要返回純 JSON,然后在客戶端渲染它們。

看下我的這個教程,它是關(guān)于怎樣用 Express 4 公開一個 RESTful APIs的。我還寫了另一篇教程,演示了怎樣把這些 APIs 和 AngularJS 結(jié)合起來。

6. 不要在 Sessions 存儲太多數(shù)據(jù)

典型的 Express 頁面應用, Session 數(shù)據(jù)默認是保存在內(nèi)存中的。當你把太多數(shù)據(jù)保存在 Session 的時候,會導致服務器開銷顯著增大。所以,要么你切換到別的儲存方式來保存 Session 數(shù)據(jù),要么盡量減少存儲在 Session 中的數(shù)據(jù)量。

比如說,當用戶登錄到你的應用的時候,你可以只在 Session 中保存他們的 ID 而不是整個用戶數(shù)據(jù)對象。還有,對于那些你能夠從 id 拿到對象的查詢,你應該會喜歡用  MongoDB 或者 Redis 來存儲 session 數(shù)據(jù)。

7. 優(yōu)化查詢

假設你有個博客,你要在主頁上顯示最新帖子。你可能會通過 Mongoose 這樣取數(shù)據(jù):

  1. Post.find().limit(10).exec(function(err, posts) {  
  2.   //send posts to client  
  3. }); 

不過問題是 Mongoose 的 find() 方法會把對象的所有字段都查詢出來,而許多字段在主頁上并不要求。比如說,commentsis 保存的是特定帖子的回復。我們不需要顯示文章回復,所以我們可以在查詢的時候把它給剔除掉。這無疑會提高速度。可以像這樣優(yōu)化上面那條查詢:

  1. Post.find().limit(10).exclude('comments').exec(function(err, posts) {  
  2.   //send posts to client  
  3. }); 

8. 用標準的 V8 方法

集合上的一些操作,比如 map,reduce,和 forEach 不一定支持所有瀏覽器。我們可以通過前臺的庫解決部分瀏覽器兼容性問題。但對于 Node.js,你要確切知道 Google 的 V8 JavaScript 引擎支持哪些操作。這樣,你就可以在服務端直接用這些內(nèi)建方法來操作集合了。

9. 在 Node 前面用 Nginx

Nginx 是個微小型輕量 Web 服務器,用它可以降低你的 Node.js 服務器的負載。你可以把靜態(tài)資源配置到 nginx 上,而不是在 Node 上。你可以在 nginx 上用 gzip 壓縮響應,讓所有的響應都變得更小。所以,如果你有個正在營運的產(chǎn)品,我覺得你應該會想用 nginx 來改善運行速度的。

10. 打包 JavaScript

最后,你還可以大大提高頁面應用速度,通過把多個 JS 文件打包。當瀏覽器在頁面渲染中碰到 <script> 元素的時候會被堵塞,直到拿到這個腳本才繼續(xù)運行(除非設置了異步屬性)。比如,如果你的頁面有五個 JavaScript 文件,瀏覽器會發(fā)出五個獨立的 HTTP 請求來獲取他們。如果把這五個文件壓縮打包成一個,整體性能將可以大幅提升。CSS 文件也是一樣。你可以用諸如 Grunt/Gulp 這樣的編譯工具來打包你的資源文件。

結(jié)論

上面 10 條技巧肯定可以提高你的 Web 應用的速度的。不過,我知道還有改善和優(yōu)化的空間。如果你有任何改善性能的技巧的話,在回復里告訴我。

謝謝閱讀!

英文原文:10 Tips to Make Your Node.js Web App Faster

譯文出自:http://www.oschina.net/translate/10-tips-make-node-js-web-app-faster

責任編輯:林師授 來源: 開源中國社區(qū) 編譯
相關(guān)推薦

2015-12-14 10:39:14

2022-05-05 09:31:58

JOIN數(shù)據(jù)庫

2012-06-13 01:53:23

Java代碼

2020-02-25 12:27:59

Node.jsWeb開發(fā)前端

2011-07-06 10:48:42

ADSL

2011-07-06 10:27:32

ADSL

2011-07-06 10:48:12

ADSL

2025-08-21 01:45:00

Linux內(nèi)存對齊

2024-01-08 17:09:07

Python解釋器CPython

2024-10-08 10:24:41

Python編程語言

2022-01-06 22:31:21

Python技巧代碼

2022-09-04 15:54:10

Node.jsAPI技巧

2021-08-06 22:51:45

CPU限流容器

2023-10-18 16:39:32

2020-11-29 17:32:01

EmacsLinux

2021-08-24 06:38:37

Node.js COW 文件復制

2015-11-04 09:18:41

Node.js應用性能

2021-11-16 08:51:29

Node JavaScript變量類型

2021-12-29 07:44:52

CMSNode.js系統(tǒng)

2017-06-28 15:21:01

Node.jsUberLinkedIn
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲高清电影| 国产精品zjzjzj在线观看| 欧美—级在线免费片| 国产日本欧美一区二区三区| 日韩一区二区不卡视频| 精品视频高潮| 欧美日韩亚洲综合一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一| 精品日韩在线播放| 欧美一区二区三区成人片在线| 欧美色图一区| 欧美一区二区三区视频免费| 日本精品一区在线观看| 免费在线你懂的| 岛国精品一区二区| 国产精品精品一区二区三区午夜版| 欧美激情 亚洲| 精品乱码一区二区三区四区| 天涯成人国产亚洲精品一区av| 亚洲一区二区三区乱码aⅴ蜜桃女| 永久免费毛片在线观看| 91成人短视频| 欧美日韩高清在线| 久久久久久久久久久福利| av在线app| 国产亚洲人成网站| 精品国产综合| 亚洲成人精品女人久久久| 日韩avvvv在线播放| 国色天香2019中文字幕在线观看| 国产精品久久久久久亚洲av| 激情亚洲小说| 在线欧美日韩国产| 国产一区二区在线视频播放| 在线观看小视频| 国产精品久久久久久一区二区三区 | 欧美视频免费| 亚洲国产欧美一区二区三区久久| 亚洲精品国产suv一区88| 98在线视频| 久久久久国产精品厨房| 超碰97在线人人| 国产精品玖玖玖| 久久99精品久久久久久国产越南 | 欧美一级高清大全免费观看| 国内自拍视频一区| 亚洲精品永久免费视频| 午夜国产精品影院在线观看| 免费高清一区二区三区| 亚洲精品天堂| 一区二区三区免费观看| 国产激情在线看| 在线观看电影av| 亚洲精品成人精品456| 国产欧美综合一区| av官网在线播放| 一区二区三区四区乱视频| 水蜜桃在线免费观看| av在线下载| 一区二区三区在线观看欧美| japanese在线播放| 牛牛在线精品视频| 调教+趴+乳夹+国产+精品| 成人在线免费观看av| 伊人成综合网站| 91黄色免费版| 亚洲视频一二三四| 日韩一区二区三区精品| 精品国产一二三区| 97香蕉碰碰人妻国产欧美| 国内精品麻豆美女在线播放视频| 欧美色国产精品| 国产一区视频免费观看| 久久av日韩| 欧美哺乳videos| 捆绑凌虐一区二区三区| 精品香蕉视频| 久久中文字幕一区| 国产一级二级三级| 99riav1国产精品视频| 国产99久久精品一区二区| 中文字幕乱码在线观看| 国产激情一区二区三区| ts人妖另类在线| 青青草免费在线| 国产精品色婷婷| 污污污污污污www网站免费| 女人让男人操自己视频在线观看| 亚洲日本韩国一区| 日韩欧美不卡在线| 日韩制服诱惑| 精品国产制服丝袜高跟| 国产又粗又猛又爽视频| 天天做天天爱天天综合网| 久久久久久久亚洲精品| 波多野结衣黄色网址| 国内外成人在线| 国产视频99| 调教视频免费在线观看| 亚洲成av人片观看| 无限资源日本好片| 久久精品色播| 日韩视频免费在线观看| 国产精品久久久久久久久久久久久久久久久 | 国产精品yjizz视频网| 在线欧美日韩国产| 亚洲熟女一区二区三区| 精品国产一区二区三区小蝌蚪| 亚洲精品久久久久久久久久久久久 | 日韩成人av电影| 欧美一区二区三区在线看| 蜜桃传媒一区二区亚洲av| 91精品国产乱码久久久久久久| 色播久久人人爽人人爽人人片视av| 插吧插吧综合网| 欧美91大片| 日本精品一区二区三区在线| 国产福利小视频| 亚洲国产高清aⅴ视频| 久久久久久久久久网| 精品国产三级| 中文字幕精品av| 黄色一级片免费在线观看| 国产成人免费在线观看不卡| 中文网丁香综合网| 国产精品扒开腿做爽爽爽视频软件| 在线观看av不卡| 国产精品成人99一区无码| 五月开心六月丁香综合色啪| 国产成人欧美在线观看| 亚洲精品无amm毛片| 最近日韩中文字幕| 日本xxxx黄色| 精品免费在线| 国产精品美女999| 四虎在线免费看| 亚洲国产综合视频在线观看| 日本精品一区在线| 99九九热只有国产精品| 国产精品永久免费观看| 黄色影院在线播放| 色999日韩国产欧美一区二区| 邪恶网站在线观看| 日韩欧美不卡| 国产精品一区二区久久久| 蜜桃视频在线免费| 大桥未久av一区二区三区| 国产又粗又长又爽| 午夜亚洲伦理| 久久偷窥视频| 视频在线日韩| 中文字幕一区电影| 国产农村妇女毛片精品| 亚洲人妖av一区二区| 日本美女久久久| 午夜精品久久99蜜桃的功能介绍| 庆余年2免费日韩剧观看大牛| 成人高清在线观看| 国产精品久久在线观看| 亚洲**2019国产| 欧美成欧美va| 国产精品一区二区久久不卡| 日韩中文不卡| 男人天堂久久| 久久精品免费电影| 国内精品国产成人国产三级| 依依成人精品视频| 漂亮人妻被黑人久久精品| 国产欧美高清| 亚洲人成网站在线播放2019| 国产一区二区三区| 久久久在线观看| 欧美孕妇性xxxⅹ精品hd| 欧美最猛黑人xxxxx猛交| 欧美成人短视频| 国产黄色精品网站| www.浪潮av.com| 日韩精品一区二区久久| 亚洲r级在线观看| 国产va在线视频| 中文字幕日韩av电影| 精品国产伦一区二区三区| 精品久久久久久中文字幕| 国产又黄又粗视频| 粉嫩av亚洲一区二区图片| 国产精品丝袜久久久久久消防器材 | 99久久精品情趣| 成人免费毛片播放| 午夜精品电影| 视频三区二区一区| 亚洲三区欧美一区国产二区| 欧美专区在线视频| www.欧美日本韩国| 国产视频精品xxxx| 中文字幕丰满人伦在线| 亚洲综合成人在线视频| 三年中国中文观看免费播放| 国产成人av一区二区三区在线观看| 在线观看欧美亚洲| 成人av动漫| 国产精品网红直播| 成人三级高清视频在线看| 中文字幕亚洲欧美日韩在线不卡 | 久久99精品久久只有精品| 欧美一区二区激情| 欧美顶级大胆免费视频| 国产精品区一区| 欧美xxxx做受欧美护士| 国模视频一区二区| 欧美一级二级三级区| 亚洲美女黄色片| 亚洲精品久久久久久久久久| 欧美少妇xxx| 天堂中文在线网| 亚洲免费成人av| 青青青视频在线播放| 久久久国际精品| 99久久免费看精品国产一区 | 亚洲激情网站免费观看| 国产手机在线观看| 成人深夜在线观看| 樱花草www在线| 日韩精品五月天| 每日在线更新av| 99pao成人国产永久免费视频| 欧美大香线蕉线伊人久久| 韩国一区二区三区视频| 国产精品视频网址| 欧美xxxx做受欧美护士| 国产91精品不卡视频| 黄毛片在线观看| 高清一区二区三区四区五区| av在线app| 欧美精品日韩三级| а√资源新版在线天堂| 伊人精品在线观看| 国产黄色在线| 亚洲日韩欧美视频一区| 免费国产在线观看| 亚洲视频在线看| 成人精品一区| 亚洲最大中文字幕| 成年午夜在线| 最近中文字幕日韩精品| 9191在线观看| 日韩在线观看免费高清| 日韩免费啪啪| 美女视频黄免费的亚洲男人天堂| 五月婷婷狠狠干| 亚洲国产欧美一区二区三区同亚洲 | 国产美女精彩久久| 春暖花开亚洲一区二区三区| 国产97人人超碰caoprom| 久久久人成影片一区二区三区在哪下载 | 国产欧美日韩精品在线观看 | 亚洲一区免费视频| 欧美毛片在线观看| 亚洲国产精品久久人人爱| 高h视频免费观看| 亚洲国产成人高清精品| 精品国产免费观看| 色婷婷av一区二区三区gif| 无码人妻丰满熟妇精品区| 欧美专区在线观看一区| 97精品久久人人爽人人爽| 欧美一区二区三区在线观看| 亚洲第一色视频| 亚洲精美色品网站| 成人在线免费电影| 久久99国产综合精品女同| а√在线天堂官网| 国产精品极品尤物在线观看| 99久久这里有精品| 国产在线精品日韩| 欧美亚洲国产一区| 黄色a级片免费看| 翔田千里一区二区| 日韩在线一区视频| 成人avav在线| 国产人妻大战黑人20p| 亚洲男人的天堂av| 国产成人精品一区二三区| 欧美中文字幕一区二区三区亚洲 | 性久久久久久| 午夜久久久精品| 懂色av一区二区三区蜜臀| 特大黑人巨人吊xxxx| 国产精品伦理在线| 日本少妇激情视频| 欧美日韩免费高清一区色橹橹| 五月婷婷六月婷婷| 91麻豆精品国产91久久久使用方法| 樱花视频在线免费观看| 91精品在线观看入口| 手机av在线免费观看| 在线播放国产一区中文字幕剧情欧美| 黄色美女网站在线观看| 久久亚洲影音av资源网| 国产在线精彩视频| 91亚洲午夜在线| 免费久久精品| 福利视频免费在线观看| 日韩精品五月天| 波多野结衣先锋影音| 亚洲男人天堂av网| 成人一二三四区| 亚洲国产精品人久久电影| 免费不卡视频| 国产国产精品人在线视| 国产伦精品一区二区三区在线播放| 国产日韩欧美一区二区三区四区| 99久久人爽人人添人人澡| 神马影院一区二区三区| 国产精品日韩欧美一区| 成年人性生活视频| 亚洲婷婷在线视频| 中文无码精品一区二区三区| 亚洲国产精品专区久久| 亚洲综合影视| 91亚洲精品一区| 久久精品欧美一区| 色综合天天色综合| 久久久亚洲午夜电影| 国产大片aaa| 日韩免费电影一区| 好了av在线| 国产欧美在线观看| 欧美日韩一区二区综合| 欧美精品第三页| 久久美女高清视频| 国产午夜性春猛交ⅹxxx| 亚洲精品一线二线三线| 亚洲区欧洲区| 成人动漫在线观看视频| 国语自产精品视频在线看8查询8| 成人在线免费观看av| youjizz国产精品| 国产午夜视频在线| 精品国产百合女同互慰| 国产素人视频在线观看| 91久久嫩草影院一区二区| 日韩理论电影| 日韩av片免费观看| 亚洲欧洲国产日韩| 国产裸体无遮挡| 欧美精品在线观看91| 欧美日韩国产一区二区在线观看| 久久国产精品久久| 国产午夜久久| a级在线免费观看| 欧美在线观看视频一区二区三区| 国产视频一二三四区| 精品国产拍在线观看| 国产91在线精品| 中文字幕av导航| 国产成人亚洲综合a∨猫咪| 久久久一区二区三区四区| 欧美mv和日韩mv国产网站| 大黄网站在线观看| 麻豆亚洲一区| 日韩精品电影在线观看| 长河落日免费高清观看| 91精品在线免费| 高清毛片在线观看| 少妇免费毛片久久久久久久久| 99pao成人国产永久免费视频| www.com黄色片| 亚洲人吸女人奶水| 成人毛片在线精品国产| 欧美一区二区三区……| 精品美女视频| 深夜福利网站在线观看| 亚洲国产精品影院| 国产小视频免费在线观看| 国产中文字幕日韩| 亚洲高清自拍| 精品人伦一区二区| 欧美一区二区三区小说| 免费v片在线观看| 一区二区不卡在线观看| av一区二区不卡| 中文字幕永久在线视频| 欧美激情精品久久久久久| 久久99影视| 欧美人与性动交α欧美精品| 精品国产鲁一鲁一区二区张丽 | 中文字幕亚洲综合久久| 一区二区三区视频播放| a在线视频观看| 最新国产精品久久精品| 三级理论午夜在线观看| 91精品免费久久久久久久久| 亚洲国产激情| 国产高清视频免费在线观看| 日韩精品中文字幕在线| 欧美成人一级| 国产又大又黄又粗的视频| 亚洲午夜精品17c| 免费日本一区二区三区视频| 久久综合狠狠综合久久综青草|