我正在开发一个具有多个模块且启用了缓存的应用程序。缓存初始化在应用程序主引导程序中完成,如下所示。
$this->bootstrap('cachemanager');
$manager = $this->getPluginResource('cachemanager')->getCacheManager();
$cacheObj = $manager->getCache('database');
Zend_Registry::set('cacheObj', $cacheObj);
有人可以告诉我,如何禁用特定模块的缓存?
答案 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);
}
}
}
}