0

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

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

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

4

1 回答 1

2

要禁用缓存对象获取或保存到缓存,您可以将选项设置cachingfalse.

使用您的对象,您可以执行以下操作:

$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);
            }
        }
    }
}
于 2012-10-10T19:39:00.583 回答