Kaedah Node.js untuk menyegarkan sesi tamat tempoh time_node.js

WBOY
Lepaskan: 2016-05-16 15:16:16
asal
1761 orang telah melayarinya

Dalam Node.js, kami biasanya menggunakan pakej sesi ekspres untuk menggunakan dan mengurus sesi serta menyimpan keadaan sesi antara pelayan dan penyemak imbas klien. Jadi bagaimana kita boleh mencapai masa tamat sesi apabila pengguna menyegarkan halaman semasa atau mengklik butang pada halaman? Sama seperti keadaan sesi dalam ASP.NET, selagi halaman kekal aktif untuk tempoh masa tertentu, sesi tidak akan tamat tempoh. Fungsi ini boleh dicapai melalui kod berikut Kami menambah perisian tengah berikut pada kod Node.js:

// 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();
}); 
Salin selepas log masuk

Dengan cara ini, setiap kali permintaan masuk, perisian tengah akan mengubah suai semula masa tamat tempoh sesi untuk mencapai kesan yang diingini.

Kemudian, tambahkan penggunaan sesi pada kod:

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_'
})
})); 
Salin selepas log masuk

Sesi di atas menggunakan memcached sebagai kaedah storan sesi Untuk cara menggunakan memcached, anda boleh rujuk alamat ini di Github https://github.com/balor/connect-memcached

Sudah tentu, anda juga boleh menggunakan kaedah storan sesi lain, seperti memoryStore, redis, mongoDB, dsb., dan kaedah penggunaannya adalah serupa.

Biar saya bercakap tentang beberapa kaedah storan sesi Node.js

Stor sesi Node.js mempunyai empat kaedah pilihan untuk ujian prestasi seperti berikut:

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

Perbandingan menunjukkan bahawa storan redis mempunyai prestasi unggul apabila terdapat lebih banyak kesesuaian.

Laman yang digunakan sesi adalah halaman yang sangat mudah;

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);});
Salin selepas log masuk

Konfigurasi kedai Redis:

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

Konfigurasi kedai Mongo:

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

Salin selepas log masuk

Jangan lupa untuk memuatkan modul apabila menggunakan storan mongodb: connect-mongo

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan