我使用sequelize作为认证的ORM和passport.js(护照本地)。 我注意到,每个HTTP请求产生一个单独的数据库命令。 我开始看deserializeUser()函数。
当加载一个页面,这就是我得到:
执行:SELECT * FROM
Users
WHEREUsers
。id
= 1 LIMIT 1;一遍一遍又一遍!
GET / 200 12毫秒 - 780
执行:SELECT * FROM
Users
WHEREUsers
。id
= 1 LIMIT 1;执行:SELECT * FROM
Users
WHEREUsers
。id
= 1 LIMIT 1;一遍一遍又一遍!
GET /js/ui.js 304个4ms的
一遍一遍又一遍!
GET /stylesheets/main.css 304个6ms的
执行:SELECT * FROM
Users
WHEREUsers
。id
= 1 LIMIT 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
});
}
是deserializeUser应该为每一个形象,HTML运行,css文件要求? 如果是这样,有减少请求到数据库的数量的方法吗?