在Yii中,我通过config / main.php文件启用了APC缓存:
'cache' => array(
'class' => 'system.caching.CApcCache',
),
当我使用Yii的内置缓存方法时,它工作得很好:
Yii::app()->cache->set('key', $value);
但是,有没有办法根据配置临时关闭它?例如,我不希望在YII_DEBUG
设置为true时启用它,并且希望$votes = Yii::app()->cache->get("key");
总是返回false,就像它为空时一样。< / p>
我尝试通过评论配置设置来解决此问题,但它会给出(而非不合理的)错误:Call to a member function get() on a non-object
答案 0 :(得分:12)
您可以配置一个根本不缓存的缓存类(因此它不会存储任何内容,get()
将始终返回FALSE
)。
可能Yii已经发布了无缓存?是的,它被称为CDummyCache
,它根本没有缓存。
这是针对您在Yii::app()->cache
NULL
为{{1}}的问题中提出的问题编写的。
请参阅CachingDocs。
答案 1 :(得分:3)
如果您只需要在本地禁用缓存,请将以下代码添加到main-local.php中。它将覆盖main.php中的缓存配置
'components' => [
...
'cache'=> [
'class'=>'CDummyCache',
],
...
]
CDummyCache是一个占位符缓存组件。
CDummyCache不会缓存任何内容。提供它以便总是可以配置“缓存”应用程序组件,并且他不需要检查Yii :: app() - &gt;缓存是否为空。通过将CDummyCache替换为其他缓存组件,可以快速从非缓存模式切换到缓存模式。
答案 2 :(得分:-4)
试试这段代码:
'cache' => array(
'class' => 'system.caching.CFileCache'
),