国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Node.js重新刷新session過期時間的方法

2019-11-20 10:37:06
字體:
來源:轉載
供稿:網友

在Node.js中,我們通常使用express-session這個包來使用和管理session,保存服務端和客戶端瀏覽器之間的會話狀態。那如何才能實現當用戶刷新當前頁面或者點擊頁面上的按鈕時重新刷新session的過期時間呢?類似于ASP.NET中session會話狀態,只要在一定的時間內頁面一直保持活動狀態,session就不會過期。通過下面的代碼可以實現這個功能,我們在Node.js的代碼中加入下面的中間件:

// use this middleware to reset cookie expiration time// when user hit page every timeapp.use(function(req, res, next){req.session._garbage = Date();req.session.touch();next();}); 

  這樣,每次當有請求過來時,該中間件都會重新修改session的過期時間,從而達到預期的效果。

  然后,在代碼中加入對session的使用:

app.use(session({secret: 'test', resave: false, saveUninitialized: true,cookie:{maxAge: 1000*60*60 // default session expiration is set to 1 hour},store: new MemcachedStore({hosts: ['127.0.0.1:9000'],prefix: 'test_'})})); 

  上面的session使用了memcached作為session的存儲方式,有關如何使用memcached可以參考Github上的這個地址https://github.com/balor/connect-memcached

  當然,你也可以使用其它的session存儲方式,例如memoryStore,redis,mongoDB等等,使用方法都大同小異。

下面給大家說說Node.js session 存儲的幾種方法

node.js session store 有可選的四種方法的性能測試如下:

Concurrency: 1none 4484.86 [#/sec] memory 2144.15 [#/sec] redis 1891.96 [#/sec] mongo 710.85 [#/sec] Concurrency: 10none 5737.21 [#/sec] memory 3336.45 [#/sec] redis 3164.84 [#/sec] mongo 1783.65 [#/sec] Concurrency: 100none 5500.41 [#/sec] memory 3274.33 [#/sec] redis 3269.49 [#/sec] mongo 2416.72 [#/sec] Concurrency: 500none 5008.14 [#/sec] memory 3137.93 [#/sec] redis 3122.37 [#/sec] mongo 2258.21 [#/sec]

對比得出redis來存儲在并發性越多的情況下性能優越。

The session used pages are very simple pages;

app.get("/", function(req,res){if ( req.session && req.session.user_id){req.session.no = req.session.user_id;} else {throw Error('error');}res.send("No: " + req.session.no);});

Redis store config:

app.use(express.session({store: new RedisStore({host: 'localhost',port: 6379,db: 2,}),secret: 'hello'}));

Mongo store config:

app.use(express.cookieParser());app.use(express.session({store: new MongoStore({url: 'mongodb://localhost/test-session'}),secret: 'hello'}));

在使用mongodb存儲時別忘記在加載一個模塊:connect-mongo

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 中江县| 扎兰屯市| 宝丰县| 临沧市| 遂宁市| 三门县| 包头市| 塔城市| 桓台县| 洪湖市| 浠水县| 凤城市| 湄潭县| 阜新市| 苏州市| 五河县| 海盐县| 中宁县| 天门市| 崇礼县| 察雅县| 赤壁市| 隆德县| 辽阳县| 新营市| 奉贤区| 沁源县| 阳谷县| 阿图什市| 丹阳市| 鲁山县| 福建省| 石楼县| 申扎县| 蚌埠市| 邵武市| 乐山市| 富锦市| 肇庆市| 陇南市|