在Node.js中,咱們一般使用express-session這個包來使用和管理session,保存服務端和客戶端瀏覽器之間的會話狀態。那如何才能實現當用戶刷新當前頁面或者點擊頁面上的按鈕時從新刷新session的過時時間呢?相似於ASP.NET中session會話狀態,只要在必定的時間內頁面一直保持活動狀態,session就不會過時。經過下面的代碼能夠實現這個功能,咱們在Node.js的代碼中加入下面的中間件:git
// use this middleware to reset cookie expiration time // when user hit page every time app.use(function(req, res, next){ req.session._garbage = Date(); req.session.touch(); next(); });
這樣,每次當有請求過來時,該中間件都會從新修改session的過時時間,從而達到預期的效果。github
而後,在代碼中加入對session的使用:redis
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-memcachedexpress
固然,你也能夠使用其它的session存儲方式,例如memoryStore,redis,mongoDB等等,使用方法都大同小異。瀏覽器