Node.js重新重新整理session到期時間的方法,node.jssession

來源:互聯網
上載者:User

Node.js重新重新整理session到期時間的方法,node.jssession

在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

您可能感興趣的文章:
  • asp中設定session到期時間方法總結
  • 幾種判斷asp.net中session到期方法的比較
  • PHP中怎樣保持SESSION不到期 原理及方案介紹
  • php中實現精確設定session到期時間的方法
  • Node.js編程中用戶端Session的使用詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.