Как отключить кэширование через конфигурацию в Yii?

в Yii я включил кэширование APC через config / main.файл php:

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

и он отлично работает, когда я использую встроенные методы кэширования Yii:

Yii::app()->cache->set('key', $value);

однако, есть ли способ временно отключить это на основе конфигурации? Я не хочу, чтобы он был включен, пока YII_DEBUG имеет значение true, например, и хотел бы $votes = Yii::app()->cache->get("key"); to всегда возвращает false, как это делает, когда он пуст.

Я попытался отключить это просто комментируя настройку конфигурации, но она дает (не необоснованные) ошибки:Call to a member function get() on a non-object

3 ответов


вы можете настроить класс кэша, который вообще не кэширует (поэтому он ничего не будет хранить и get() всегда будет возвращать FALSE).

вероятно, Yii уже поставляется с no-cache? Да, это так, это называется CDummyCache и он вообще не кэширует.

Это было написано Для проблемы, которую вы описываете в своем вопросе, что Yii::app()->cache is NULL.

посмотреть кэшированиеDocs.


Если вам нужно отключить кэш только локально, добавьте следующий код в main-local.РНР. Он переопределит конфигурацию кэша в main.в PHP

'components' => [
... 
    'cache'=> [
        'class'=>'CDummyCache',
    ],
...
]

CDummyCache-это компонент кэша заполнителей.

CDummyCache ничего не кэширует. Это предусмотрено, чтобы всегда можно было настроить компонент приложения "кэш", и ему не нужно проверять, является ли Yii:: app()->cache нулевым или нет. Путем замены CDummyCache с другим компонентом кэш, можно быстро переключитесь из режима без кэширования в режим кэширования.

Yii 1.x: CDummyCache doc

Yii 2.x: DummyCache doc


попробуйте этот код:

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