@y0rker

Как удалить кеш фрагмента в yii2?

Во 1х тупо не работает код
$dependency = [
    'class' => 'yii\caching\DbDependency',
    'sql' => "SELECT updated_at FROM fm_competitions_matches WHERE id = {$round->id}"
];
if ($this->beginCache('Round'.$round->id, [
    'duration' => 3600,
    'dependency'=> $dependency,
])) {
    // Кешируемый код
    $this->endCache();
}

И при изменении updated_at в бд - кеш не обновляется.
Так же не работает очищение кеша
Yii::$app->cache->delete('Round'.$round->id);
  • Вопрос задан
  • 3802 просмотра
Решения вопроса 1
@y0rker Автор вопроса
Перелопатил код фреймворка и выявил, что ключ для фрагментов генерируется иначе.
Решение проблемы с очисткой кеша фрагмента
$buldKey = ['yii\widgets\FragmentCache', 'Round'.$round->id];
Yii::$app->cache->delete($buldKey);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SamDark
@SamDark
Yii2 core team
Почему зависимость не работает сходу не знаю. Не чистится потому как непосредственно ключ кеша для фрагментов вычисляется для предотвращения конфликтов автоматически вот так:

https://github.com/yiisoft/yii2/blob/master/framew...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы