具有分页功能的Zend Cache无法正常工作

时间:2012-11-09 22:39:58

标签: php zend-framework caching zend-paginator zend-cache

我是Zend Framework的新手。我正在使用Zend缓存,我几乎从文档中复制了代码,这是我的代码:

 $frontendOptions = array(
                'lifetime' => 3600, // cache lifetime of 1 hour
                'automatic_serialization' => true
        );

        $backendOptions = array(
                'cache_dir' => '../tmp/' // Directory where to put the cache files
        );

        // getting a Zend_Cache_Core object
        $cache = Zend_Cache::factory('Core',
                'File',
                $frontendOptions,
                $backendOptions);


        // see if a cache already exists:
        if( ($paginator = $cache->load('index' . $page)) === false ) {


            $table = new self;
            $query = $table->select()->setIntegrityCheck(false);
            $query->from('feeds', array('feeds.blog_id', 'feeds.date_created', 'feeds.feed_id', 'feeds.post_content', 'feeds.post_link', 'feeds.post_title', 'feeds.post_thumb'));      

            $query->where('feeds.date_created <= NOW()');

            $query->order('feeds.date_created DESC');


            $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($query));
            $paginator->setItemCountPerPage(10);
            $paginator->setCurrentPageNumber($page);

            $cache->save($paginator, 'index' . $page);

        }

            return $paginator;

因此,在我访问运行此查询的网站后,我看到正在创建的文件,它也是一个19或20kb的文件,无论哪个页面即时缓存,但页面加载速度与以前相同,如果我更新数据库中的内容,我看到更新的版本,而不是缓存,我认为缓存不会显示缓存生命周期的任何更新。有什么建议?感谢

2 个答案:

答案 0 :(得分:2)

paginator本身不是你想要缓存的对象 - 你必须缓存db中的结果,这将在paginator中完成。

为此,有一种方法可以将缓存对象附加到分页器

Zend_Paginator::setCache($cache);
$paginator->setCacheEnabled(true);

并且paginator将为您处理缓存。

答案 1 :(得分:0)

从缓存中恢复的paginator,执行它应该执行的操作 - 执行查询。每次从缓存中加载它都会这样做。

您应该保存最终结果,而不是分页器。