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



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

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

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

要禁止将缓存对象读取或保存到缓存中,可以将选项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);
            }
        }
    }
}

最新更新