Сеансы Connect-mongo автоматически не удаляются
У меня есть приложение, использующее NodeJS, Express, MongoDB и connect-mongo.
Моя проблема заключается в том, что сеансы не кажутся автоматически удаляемыми из MongoDB, когда они истекают, поэтому размер db растет до тех пор, пока диск не будет заполнен.
Разработчик connect-mongo написал комментарий:
connect-mongo попросит MongoDB удалить все сеансы, которые истек до текущей даты.
Но это, похоже, не происходит в моем случае.
Моя конфигурация:
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'));
});
И Im в настоящее время работает со следующими версиями:
- node: 0.7.0-pre
- connect-mongo: 0.1.7
- выразить: 2.5.2
- connect: 1.8.5
Ответы
Ответ 1
Вы не установили clear_interval
для своих сеансов. По умолчанию для подключения-mongo используется значение -1 (или "никогда" ):
clear_interval
Интервал в секундах для удаления истекших сеансов (необязательно, по умолчанию: -1). Значения <= 0 отключить очистку сеанса с истекшим сроком действия.
Пример удаления истекших сессий каждый час (3600 секунд):
var sessionStore = new MongoStore({
db: 'myappsession',
clear_interval: 3600
});
Вы также должны убедиться, что вы установили maxAge
на своих сеансах, чтобы они действительно истекали (например, с использованием 1 дня):
app.use(express.session({
secret: "myappsecret",
cookie: { maxAge: 24 * 60 * 60 * 1000 },
store:sessionStore
}));