ホームページ > ウェブフロントエンド > jsチュートリアル > セッション有効期限を更新するための Node.js メソッド time_node.js

セッション有効期限を更新するための Node.js メソッド time_node.js

WBOY
リリース: 2016-05-16 15:16:16
オリジナル
1775 人が閲覧しました

Node.js では、通常、express-session パッケージを使用してセッションを使用および管理し、サーバーとクライアント ブラウザー間のセッション状態を保存します。では、ユーザーが現在のページを更新するか、ページ上のボタンをクリックするときにセッションの有効期限を設定するにはどうすればよいでしょうか? ASP.NET のセッション状態と同様に、ページが一定期間アクティブである限り、セッションは期限切れになりません。この機能は、次のコードを通じて実現できます。次のミドルウェアを Node.js コードに追加します。

// use this middleware to reset cookie expiration time
// when user hit page every time
app.use(function(req, res, next){
req.session._garbage = Date();
req.session.touch();
next();
}); 
ログイン後にコピー
このようにして、リクエストが届くたびに、ミドルウェアはセッションの有効期限を再変更して、望ましい効果を実現します。


次に、セッションの使用をコードに追加します。

app.use(session({
secret: 'test', 
resave: false, 
saveUninitialized: true,
cookie:{
maxAge: 1000*60*60 // default session expiration is set to 1 hour
},
store: new MemcachedStore({
hosts: ['127.0.0.1:9000'],
prefix: 'test_'
})
})); 
ログイン後にコピー
上記のセッションではセッション保存方法として memcached を使用しています。memcached の使用方法については、Github のこのアドレスを参照してください https://github.com/balor/connect-memcached


もちろん、memoryStore、redis、mongoDB などの他のセッション保存方法も使用でき、使用方法は同様です。

Node.js セッション ストレージのいくつかの方法についてお話しましょう

Node.js セッション ストアには、次のようなパフォーマンス テスト用のオプションのメソッドが 4 つあります。

Concurrency: 1
none 4484.86 [#/sec] 
memory 2144.15 [#/sec] 
redis 1891.96 [#/sec] 
mongo 710.85 [#/sec] 
Concurrency: 10
none 5737.21 [#/sec] 
memory 3336.45 [#/sec] 
redis 3164.84 [#/sec] 
mongo 1783.65 [#/sec] 
Concurrency: 100
none 5500.41 [#/sec] 
memory 3274.33 [#/sec] 
redis 3269.49 [#/sec] 
mongo 2416.72 [#/sec] 
Concurrency: 500
none 5008.14 [#/sec] 
memory 3137.93 [#/sec] 
redis 3122.37 [#/sec] 
mongo 2258.21 [#/sec]
ログイン後にコピー
比較すると、同時実行性が高い場合、Redis ストレージのパフォーマンスが優れていることがわかります。

セッションで使用されるページは非常に単純なページです。

app.get("/", function(req,res){
if ( req.session && req.session.user_id){
req.session.no = req.session.user_id;
} else {
throw Error('error');
}
res.send("No: " + req.session.no);});
ログイン後にコピー

Redis ストア構成:

app.use(express.session({
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 2,
}),
secret: 'hello'}));
ログイン後にコピー

Mongo ストア構成:

app.use(express.cookieParser());app.use(express.session({
store: new MongoStore({
url: 'mongodb://localhost/test-session'
}),
secret: 'hello'}));

ログイン後にコピー
mongodb ストレージを使用する場合は、モジュールをロードすることを忘れないでください: connect-mongo

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート