@rrolegov

Что лучше — использовать сессию или делать запрос к базе данных?

Добрый день, хочу немного проконсультироваться по такому вопросу. В Yii2 у меня есть раздел страницы на сайте, доступный пользователям, которые не только зарегистрировались, но также и подтвердили свой email. Для тех, кто свой email не подтвердил, этот раздел на странице не доступен, хотя сама страница доступна. Сама страница рендерится в контроллере, который передает во view этой страницы параметр user_status (0 - незарегистрированный, 1 - зарегистрированный, 2 - подтвердил email). Соответственно, в зависимости от значения user_status, view либо показывает этот скрытый раздел, либо закрывает его. Вопрос, который меня беспокоит: при каждом вызове действия контроллер должен передавать во view user_status, соответственно контроллер делает запрос к базе данных и получает информацию о текущем пользователе. Yii->app->user-identity я здесь использовать не могу, потому что моя логика не является частью IdentityInterface, поэтому компонент user не содержит нужную мне информацию. Но разумно ли каждый раз обращаться к базе данных? Или правильнее будет поставить статус пользователя в сессию? Спасибо.
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Или правильнее будет поставить статус пользователя в сессию?
Этот вариант - верный, т.к. не нужно дёргать постоянно базу.
PS: А вообще, нужно иметь репозиторий родительского класса в приложении и получать туда все нужные данные о пользователе из базы или сессии однократно за всё время работы скрипта (за одно клиентское обращение через URL)...

На будущее, для кэша на сессиях:
1. Сессия - это кеширование данных базы.
2. Запрос к базе - актуализация данных кэша.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы