2

MongoDB をバックエンドとして使用し、セッション用に connect-mongo ミドルウェアを使用する Express Web サイトを開発しています。監視の結果、サーバーのデータベース時間の約 25% が MongoDB セッション ストアへの更新の送信に (ほとんど無駄に) 費やされていることがわかりました。

その READMEによると、 connect-mongo は要求ごとにストア (私の場合は MongoDB) を体系的に更新しているようですが、touchAfterオプションを使用してこの動作を無効にすることもできます。

Express-session >= 1.10.0 を使用していて、ユーザーがページを更新するたびにすべてのセッションをデータベースに再保存したくない場合は、期間を制限してセッションを遅延更新できます。

app.use(express.session({
    secret: 'keyboard cat',
    saveUninitialized: false, // don't create session until something stored
    resave: false, //don't save session if unmodified
    store: new mongoStore({
        url: 'mongodb://localhost/test-app',
        touchAfter: 24 * 3600 // time period in seconds
    })
}));

これを行うことで、 touchAfter: 24 * 3600 を設定すると、24 時間に 1 回だけ更新されるようにセッションに指示され、リクエストがいくつ行われても関係ありません (セッション データで何かを変更するものを除く)。

私が理解していないのは、なぜこれよりも別の動作が必要なのかということです. データが変更されていないセッションを更新するのはなぜですか?

4

0 に答える 0