Как отключить кэширование через конфигурацию в 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 с другим компонентом кэш, можно быстро переключитесь из режима без кэширования в режим кэширования.