CakePHP: как работают группы кеширования?

Я пытаюсь использовать группы кеширования, но примеры в документации мне не очень понятны.

Это мой бутстрап:

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');
}

Но это не работает: файлы из кеша не удаляются.

Где я делаю не так? Что я не понимаю? Спасибо!


person Mirko Pagliai    schedule 20.09.2014    source источник


Ответы (1)


Потому что имя вашей группы - «страница», а не «страницы».

person user2294131    schedule 30.04.2019