Я использую 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
Вот как выглядит паспорт .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 файла? Если да, существует ли способ уменьшить количество запросов к БД?