Я пытаюсь использовать группы кеширования, но примеры в документации мне не очень понятны.
Это мой бутстрап:
Cache::config('default', array(
'engine' => $engine,
'duration' => $duration,
'prefix' => $prefix,
'groups' => array('page', 'photo', 'post')
));
Мы предполагаем, что у меня есть модель, включая статьи, страницы, фотографии и т. Д., И в различных действиях данные записываются в кеш.
Например, PagesController:
public function index() {
$pages = Cache::read($cache = 'pages_index');
if(empty($pages)) {
$pages = $this->Page->find('all');
Cache::write($cache, $pages);
}
$this->set(array(
'pages' => $pages
));
}
Это создает файл
tmp/cache/pages_index
Кеш работает правильно, следующий запрос будет использовать кеш. Другие действия записывают данные для страницы модели Page.
Снова PagesController:
public function view($slug = NULL) {
$page = Cache::read($cache = sprintf('pages_view_%s', $slug));
//If the data are not available from the cache
if(empty($page)) {
$page = $this->Page->find('first', array(
'conditions' => array('slug' => $slug)
));
if(empty($page))
throw new NotFoundException(__('Invalid page'));
Cache::write($cache, $page);
}
$this->set(array(
'page' => $page
));
}
Это тоже работает правильно.
Теперь я хочу, чтобы при редактировании страницы из кеша удалялись все данные о страницах. То же самое должно произойти и с другими моделями (посты, фото и т. Д.).
Итак, в моей модели Page:
public function afterSave($created, $options = array()) {
Cache::clearGroup('pages');
}
Но это не работает: файлы из кеша не удаляются.
Где я делаю не так? Что я не понимаю? Спасибо!