Здравствуйте. Ломаю голову 3 час, может вы сможете помочь...
И так, данные кэшируем через FileCache.
Что имеем? Страницу, которая принимает гет параметры: id, page. На странице вызывается функция getHtml и генерирует HTML код, после выводит на страницу. Необходимо закешировать те страницы которые были открыты по тегу.
Что бы в итоге я мог удалить кэш с key -> ID, а все что key -> ID,PAGE удалились самостоятельно.
Вот что сделал. Но не удаляется по цепочке...
public function getHtmlCache($id, $page)
{
if(!$this->site->cached) {
return $this->getHtml($id, $page);
}
$cache = Yii::createObject([
'class' => 'yii\caching\FileCache',
'cachePath' => '@common/runtime/cache/'
]);
$page = $page ?? 0;
$cache_key = [
'method' => 'API',
'type' => 'html',
'id' => $id
];
if($cache->exists($cache_key) && Yii::$app->request->get('del')) {
return $cache->delete($cache_key);
}
if($page > 0) {
$cache_key['page'] = $page;
}
$data = $cache->get($cache_key);
if($data === false) {
$data = $this->getHtml($id, $page);
$cache->set($cache_key, $data, null, new TagDependency(['tags' => 'api_site_id' . $id]));
}
return $data;
}