rrestjs高性能node.js開發(fā)框架
rrest.js是一款基于expressjs代碼開發(fā)的高性能node.js開發(fā)框架,由于重新編寫了框架組織架構(gòu),比expressjs整體性能提升大約10%,實(shí)用功能也更加豐富,API和代碼風(fēng)格相比expressjs更簡(jiǎn)單易懂。
rrestjs有以下幾個(gè)亮點(diǎn):
1、Restful模式:去掉了expressjs的app.get()路由機(jī)制,重新拆分客戶端請(qǐng)求的uri,直接加載指定模塊和執(zhí)行模塊內(nèi)的方法,如果出錯(cuò)輸出500或404。比如用戶訪問(wèn)/user/face,訪問(wèn)頭像頁(yè)面,則rrestjs會(huì)根據(jù)拆分的uri去指定目錄require('user')模塊,然后執(zhí)行face方法,省去了正則路由判斷,提升性能。
2、原生node.js的API風(fēng)格:沒有expressjs自己封裝的app.use等等,輸出一個(gè)helloworld只需如下代碼,降低了學(xué)習(xí)新代碼風(fēng)格的成本:
var http = require('http'),
rrest = require('rrestjs'),
server = http.createServer(rrest(function (req, res) {
res.end('hello world');
})).listen(3000);
3、開發(fā)模式自動(dòng)保存重啟:在開發(fā)模式下,支持像PHP那樣的寫代碼,保存自動(dòng)重啟,放棄ctrl+c 然后 上+enter。
4、多進(jìn)程共享session:多進(jìn)程可以共享保存在內(nèi)存中的session數(shù)據(jù),而且以后部署上生產(chǎn)環(huán)境,只需加載不同配置文件,無(wú)需改動(dòng)代碼即可支持mongodb的session存儲(chǔ)
5、提高靜態(tài)文件輸出性能:expressjs在靜態(tài)文件輸出上由于加上etag或last-modify緩存,需要2次I/O操作,rrestjs在此基礎(chǔ)上做了2級(jí)緩存,減少一次I/O操作,性能提升10%。
6、多進(jìn)程多任務(wù)管理:可以讓多進(jìn)程監(jiān)聽多端口,做不同業(yè)務(wù),由一個(gè)守護(hù)進(jìn)程守護(hù),萬(wàn)一發(fā)現(xiàn)子進(jìn)程意外掛掉,可以馬上喚醒它,并且還是繼續(xù)監(jiān)聽之前的端口和做之前的業(yè)務(wù)。
7、封裝了mongodb連接池:封裝了mongodb的連接池,可以手動(dòng)的設(shè)定連接池的大小,大大提高的效率和穩(wěn)定性。
8、IP和資源白名單過(guò)濾:增加了白名單功能,方便項(xiàng)目上公網(wǎng)以后的調(diào)試和測(cè)試。
9、增加jade的html緩存:增加html緩存功能,加速大并發(fā),高I/O的輸出jade模版,同時(shí)設(shè)置了更新緩存鑰匙機(jī)制,防止緩存重建時(shí)的雪崩情況。
10、增加deflate和gzip:根據(jù)content-type的屬性值,選擇性的使用delate或gzip壓縮數(shù)據(jù)響應(yīng)給客戶端,因?yàn)閳D片的gzip意義不大。
11、自動(dòng)加載模塊:根據(jù)自動(dòng)加載例外的配置,去自動(dòng)加載modules文件夾下的所有模塊,不必一個(gè)個(gè)require了
