如何在Yii中通过配置禁用缓存?

时间:2011-12-22 16:51:23

标签: php caching yii

在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

3 个答案:

答案 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替换为其他缓存组件,可以快速从非缓存模式切换到缓存模式。

Yii 1.x: CDummyCache doc

Yii 2.x: DummyCache doc

答案 2 :(得分:-4)

试试这段代码:

'cache' => array(  
        'class' => 'system.caching.CFileCache'  
    ),