Как я могу отключить кэширование через конфигурацию в Yii? - PullRequest
9 голосов
/ 22 декабря 2011

В 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"); в всегда возвращал false, как это происходит, когда он пуст.

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

Ответы [ 3 ]

13 голосов
/ 22 декабря 2011

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

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

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

См. Кэширование Документы .

4 голосов
/ 11 августа 2016

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

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

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

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

Yii 1.x: CDummyCache doc

Yii 2.x: DummyCache doc

0 голосов
/ 08 ноября 2012

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

'cache' => array(  
        'class' => 'system.caching.CFileCache'  
    ), 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...