在Zend中如何禁用模块的缓存?

时间:2012-10-10 10:34:03

标签: zend-framework

我正在开发一个具有多个模块且启用了缓存的应用程序。缓存初始化在应用程序主引导程序中完成,如下所示。

$this->bootstrap('cachemanager');
$manager = $this->getPluginResource('cachemanager')->getCacheManager();
$cacheObj   = $manager->getCache('database');
Zend_Registry::set('cacheObj', $cacheObj); 

有人可以告诉我,如何禁用特定模块的缓存?

1 个答案:

答案 0 :(得分:2)

要禁止缓存对象从提取或保存到缓存,您可以将选项caching设置为false

使用您的对象,您可以:

$cacheObj = Zend_Registry::get('cacheObj');
if ($cacheObj instanceof Zend_Cache_Core) {
    $cacheObj->setOption('caching', false);
}

要自动执行此操作,您可以编写一个控制器插件来为您执行此操作。这是一个例子:

<?php
class Application_Plugin_DisableCache extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        $module = $request->getModuleName();

        // change 'dont_cache_me' to the module you want to disable caching in
        if ('dont_cache_me' == $module) {
            $cacheObj = Zend_Registry::get('cacheObj');
            if ($cacheObj instanceof Zend_Cache_Core) {
                $cacheObj->setOption('caching', false);
            }
        }
    }
}