时间:2021-05-26
在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
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Node.js中,我们通常使用express-session这个包来使用和管理session,保存服务端和客户端浏览器之间的会话状态。那如何才能实现当用户刷新
Node.js是一个开源JavaScript运行时环境。在这里,您将学习如何在CentOS8服务器上安装Node.js。什么是Node.js?Node.js是一
什么是Node.js的模块(Module)?在Node.js中,模块是一个库或框架,也是一个Node.js项目。Node.js项目遵循模块化的架构,当我们创建了
一、安装npm镜像(1)下载node.js,配置node.js的环境变量检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd"=>输入
Node.JS是一个控制台程序,如果想要从Node.JS弹出Windows系统提示框的话,有很多方法可以实现。比如借助electron或node-webkit: