Всем привет.
Помогите, пожалуйста, разобраться с кэшированием по условию (TagDependence) в Yii2. Использую Memcached.
Хочу сделать кэширование личных данных пользователя (ФИО).
Логика такая:
1) в компоненте UsersAuthComponent в методе getUserById устанавливаю кэш по TagDependency.
public function getUserById($id)
{ // получить запись (ActiveRecord) пользователя User по id
return $this->getModel()::find()
->andWhere(['id' => $id])
->cache(null, new TagDependency(['tags' => 'current_user' . \Yii::$app->user->id]))
->one();
}
2) затем, если в форму редактирования ФИО вводятся новые данные, вызывается метод editUser() того же компонента UsersAuthComponent, в котором происходит удаление условия по тегу - TagDependency::invalidate.
public function editUser($model)
{ // обновить данные пользователя
if (!$model->validate(['fio'])) {
return false;
}
if (!$model->update()) {
return false;
}
TagDependency::invalidate(\Yii::$app->cache, 'current_user'. \Yii::$app->user->id);
return true;
}
Я понимаю это так, что когда в процессе редактирования будет обновлено поле ФИО пользователя, будет вызван метод editUser, который затрет зависимость по тегу, после чего кэш будет удален и будет выведено новое ФИО из БД.
На деле, всё происходит не так - в БД поле обновляется, а на странице пользователя нет (выводится из кэша).
Подскажите, пожалуйста, что я делаю не так?