• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 友情文章 > 正文

    Node.js重新刷新session过期时间的方法_session 过期时间

    时间:2020-03-30来源:山茶花美文网 本文已影响 山茶花美文网手机站

    在Node.js中,我们通常使用express-session这个包来使用和管理session,保存服务端和客户端浏览器之间的会话状态。那如何才能实现当用户刷新当前页面或者点击页面上的按钮时重新刷新session的过期时间呢?类似于中session会话状态,只要在一定的时间内页面一直保持活动状态,session就不会过期。通过下面的代码可以实现这个功能,我们在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(); });

    这样,每次当有请求过来时,该中间件都会重新修改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:///balor/connect-memcached

    当然,你也可以使用其它的session存储方式,例如memoryStore,redis,mongoDB等等,使用方法都大同小异。

    下面给大家说说Node.js session 存储的几种方法

    node.js session store 有可选的四种方法的性能测试如下:

    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]

    对比得出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

    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全