13

NodeJS、Express、MongoDB、および connect-mongo を使用するアプリケーションがあります。

私の問題は、セッションが期限切れになったときに MongoDB から自動的に削除されないように見えるため、ディスクがいっぱいになるまでデータベースのサイズが大きくなることです。

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'));
});

現在、次のバージョンを実行しています。

  • ノード: 0.7.0-pre
  • 接続モンゴ: 0.1.7
  • エクスプレス: 2.5.2
  • 接続: 1.8.5
4

2 に答える 2

25

セッションに を設定していませんclear_interval.. connect-mongo のデフォルトは -1 (または "never") です:

clear_interval期限切れのセッションをクリアする間隔 (秒単位) (オプション、デフォルト: -1 )。値 <= 0 は、期限切れのセッションのクリアを無効にします。

期限切れのセッションを 1 時間ごと (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
}));
于 2012-08-23T04:08:54.140 に答える