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


How can I disable caching via configuration in 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,因为它是空的。

我试过通过注释配置设置来关闭这个,但它给出了(不是不合理的)错误:Call to a member function get() on a non-object

你可以配置一个根本不缓存的缓存类(所以它不会存储任何东西,get()将始终返回FALSE)。

可能Yii已经配备了无缓存?是的,它有,它叫做CDummyCache,它根本不缓存。

对于你在问题中概述的问题,Yii::app()->cacheNULL

看到缓存<一口>文档

如果您只需要在本地禁用缓存,请在main-local.php中添加以下代码。它将覆盖main.php

中的缓存配置
'components' => [
... 
    'cache'=> [
        'class'=>'CDummyCache',
    ],
...
]

CDummyCache是一个占位符缓存组件。

CDummyCache不缓存任何东西。它的提供是为了让人们总是可以配置一个"缓存"应用程序组件,而不需要检查Yii::app()->cache是否为null。通过使用其他缓存组件替换CDummyCache,可以快速地从非缓存模式切换到缓存模式。

Yii 1。x: CDummyCache doc

Yii 2。x: DummyCache doc

试试下面的代码:

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