我有一个使用 NodeJS、Express、MongoDB 和 connect-mongo 的应用程序。
我的问题是 session 过期时似乎不会自动从 MongoDB 中删除,因此 db 大小会增长直到磁盘已满。
connect-mongo的开发者wrote a comment :
connect-mongo will ask MongoDB to remove all the sessions that have expired before the current date.
但这似乎并没有发生在我的案例中。
我的配置是:
var express = require('express');
var MongoStore = require('connect-mongo');
var sessionStore = new MongoStore({db: 'myappsession'});
var app = express.createServer();
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: "myappsecret", store:sessionStore }));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
我目前正在运行以下版本:
- Node : 0.7.0-pre
- connect-mongo: 0.1.7
- express : 2.5.2
- 连接: 1.8.5
最佳答案
您还没有设置 clear_interval
对于您的 session .. connect-mongo 默认值为 -1(或“从不”):
clear_interval
Interval in seconds to clear expired sessions (optional, default: -1). Values <= 0 disable expired session clearing.
每小时(3600 秒)删除过期 session 的示例:
var sessionStore = new MongoStore({
db: 'myappsession',
clear_interval: 3600
});
您还应该确保已在 session 上设置了 maxAge
以使其实际过期(例如使用 1 天):
app.use(express.session({
secret: "myappsecret",
cookie: { maxAge: 24 * 60 * 60 * 1000 },
store:sessionStore
}));
关于node.js - Connect-mongo session 不会被自动删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081741/