Method _ Node. js

Source: Internet
Author: User
In Node. js, we usually use the express-session package to use and manage sessions and save the session status between the server and the client browser. Then, how can we refresh the expiration time of the session when the user refreshes the current page or clicks the button on the page? Next, let's take a look at Node through this article. in js, we usually use the express-session package to use and manage sessions and save the session status between the server and the client browser. So how can we refresh the session expiration time when the user refreshes the current page or clicks the button on the page? Similar to the session Status in ASP. NET, as long as the page remains active for a certain period of time, the session will not expire. The following code implements this function. We Add the following middleware to the Node. js code:

// 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();}); 

In this way, when a request comes over, the middleware will re-Modify the expiration time of the session to achieve the expected results.

Then, add the session usage in the Code:

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_'})})); 

The above session uses memcached as the session storage method, for how to use memcached can refer to the address on Github https://github.com/balor/connect-memcached

Of course, you can also use other session storage methods, such as memoryStore, redis, and mongoDB.

The following describes several methods for storing Node. js sessions.

Node. js session store has four optional performance tests:

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]

The comparison shows that redis has superior performance in the case of more concurrency.

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'}));

When using mongodb storage, do not forget to load a module: connect-mongo

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.