CakePHP:缓存组如何工作?

时间:2014-09-20 15:11:06

标签: cakephp caching cakephp-2.3

我试图使用缓存组,但examples in the documentation对我来说不是很清楚。

这是我的 bootstrap

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

但这不起作用:没有文件从缓存中删除。

我在哪里做错了?我不明白的是? 谢谢!

1 个答案:

答案 0 :(得分:0)

因为您的网上论坛名称是“页面”,而不是“页面”。