第九区

一个程序员的经验笔记

Zend framework页面缓存:zend_cache的page前端

| 暂无评论

Zend framework框架以功能强大著称,比如缓存类Zend_Cache,就有多种前端和后端,今天试用了Zend_Cache的一个page前端,作用是给每个action页面定义缓存。
这个缓存是直接写到bootstrap的,甚至,如果你希望的话,也可以写到index.php里面。
这段代码的前半部分是标准的cache用法,毕竟page缓存不适合所有页面,core标准缓存还是有存在的必要。

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected $_cache;    
    protected function _initCache(){
        $frontendOptions = array(
            'lifeTime' => 86400,//缓存有效期一天
            'automatic_serialization' => true,
        );
        $backendOptions = array(
            'cache_dir' => APPLICATION_PATH.'/data/cache/'
        );
        $this->_cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
        Zend_Registry::set('cache', $this->_cache);
        
         $pageFrontendOptions = array(
                'lifeTime' => 86400,//缓存有效期一天
                //'debug_header' => true,
                'regexps' => array(
                    '^/index/index' => array('cache' => true),  //缓存首页
                    '^/index/finish' => array('cache' => true), 
                    '^/index/userblock'=>array('cache'=>FALSE),
                    '^/index/test'=>array('cache'=>FALSE),//不缓存测试页
                    '^/articles'=>array('cache'=>true),
                    '^/books'=>array('cache'=>true),
                    '^/user'=>array('cache'=>false),
                    //'^/user'=>array('cache'=>true,'cache_with_get_variables' => FALSE,'cache_with_post_variables' => false),//有数据输入时不缓存
                    '^/record'=>array('cache'=>true),
                    '/task'=>array('cache'=>FALSE),
                    '/clock'=>array('cache'=>FALSE),
                    '/captcha'=>array('cache'=>FALSE),
                    '/email'=>array('cache'=>FALSE),
                    '/invent'=>array('cache'=>FALSE),
                    '/admin'=>array('cache'=>FALSE),
                    '/self'=>array('cache'=>FALSE)
                 ),
                 'default_options' => array(
                    'cache_with_get_variables' => true,
                    'cache_with_post_variables' => true,
                    'make_id_with_cookie_variables' => true, // 注意如果开了session要把这个打开
                    'cache_with_session_variables' => true, // 注意如果开了session要把这个打开
                    'cache_with_files_variables' => true,
                    'cache_with_cookie_variables' => true, // 注意如果开了session要把这个打开
                  )
            );
            $pageBackendOptions = array(
                'cache_dir' => APPLICATION_PATH.'/data/cache/pages'
            );
            $cache = Zend_Cache::factory('Page', 'File', $pageFrontendOptions, $pageBackendOptions);
            Zend_Registry::set('pageCache', $cache);
            $cache->start();
    }
}

发表评论

*为必填字段!