我有关于快速会话存储内存的问题,并设置了reapInterval值。我有一个示例代码,它将每5秒输出一次memorystore的值。如果我现在设置一个5000的reapinterval,它应该每5秒清理一次过期的会话吗?所以我的例子如下:
/**
* Module dependencies.
*/
var express = require('express');
var app = module.exports = express.createServer();
var MemStore = require('express/node_modules/connect/lib/middleware/session/memory');
var store = new MemStore({reapInterval: 5000});
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({secret: 'your secret here', store: store, cookie: {maxAge: 30000}}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
setInterval(function(){
console.log(new Date());
console.log(store);
}, 5000);
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', function(req, res){
res.render('index', {
title: 'Express'
});
});
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
现在的问题是,如果我在30秒后重新访问该页面,我会得到一个新的SID,但内存中的旧会话仍然存在...是否应该每5秒检查一次并删除?
谢谢你的帮助!
答案 0 :(得分:1)
所以第一个问题是这里的误解。 reapInterval什么都不做。 MemoryStore根据会话cookie的到期时间清除cookie。所以在Connects MemoryStore中实际上存在一个错误。我认为它破碎的流程是这样的。
这里有一个关于此的讨论。
https://github.com/senchalabs/connect/issues/328
多汁的报价
“简短的cookie会话会被搞砸我猜”--visionmedia