Sequelize を ORM として使用し、passport.js (passport-local) を認証に使用しています。すべての HTTP リクエストが個別のデータベース コマンドになることに気付きました。私は deserializeUser() 関数を見始めました。
単一のページをロードすると、次のようになります。
実行: SELECT * FROM
Users
WHEREUsers
.id
=1 リミット 1;何度も何度も!
GET / 200 12ms - 780
実行: SELECT * FROM
Users
WHEREUsers
.id
=1 リミット 1;実行: SELECT * FROM
Users
WHEREUsers
.id
=1 リミット 1;何度も何度も!
GET /js/ui.js 304 4ms
何度も何度も!
GET /stylesheets/main.css 304 6ms
実行: SELECT * FROM
Users
WHEREUsers
.id
=1 リミット 1;何度も何度も!
GET /images/logo.jpg 304 3ms
Passport.deserializeUser の外観は次のとおりです。
passport.deserializeUser(function(id, done) {
User.find(id).success(function(user) {
console.log('Over and over and over!');
done(null, user);
}).error(function(err) {
done(err, null);
});
});
私がリクエストしているページは次のとおりです。
index: function(req, res) {
res.render('index', {
title: "Welcome to EKIPLE!",
currentUser: req.user
});
}
要求されたすべての画像、html、css ファイルに対して deserializeUser が実行されることになっていますか? もしそうなら、DBへのリクエスト数を減らす方法はありますか?