Когда я использую
Yii::$app->user->id
или
Yii::$app->user->isGuest
Yii2 выполняет SELECT * FROM
пользователя WHERE
id ='4'
.
Как я могу предотвратить этот повторяющийся запрос для оптимизации моего веб-приложения?
Кэширование или определение глобальной переменной сеанса и что-то в этом роде.
Включите один из поддерживаемых хранилищ кеша и замените return static::findOne(['id' => $id]);
код return static::findOne(['id' => $id]);
вы упомянули в своем комментарии
$db = self::getDb();
return static::getDb()->cache(function ($db) use ($id) {
return static::find()->where(['id' => $id])->one();
});
Для получения дополнительной информации см. Http://www.yiiframework.com/doc-2.0/guide-caching-data.html.