Я использую кеширование запросов с бесконечным временем истечения. Рассмотрим фрагмент кода ниже, например:
$channels = Channels::model()->cache(0)->findAll(array('order' => 'channel_name'));
Этот оператор должен делать в записи в кеше, и он делает, но он не извлекает данные из кеша, скорее он напрямую отправляется в БД для получения результата.
Хотя, если я предоставлю время истечения> 0 (ноль), то все будет работать гладко. Например:
$channels = Channels::model()->cache(20)->findAll(array('order' => 'channel_name'));
отлично работает в течение 20 секунд и извлекает результаты из кеша.
Мы подтвердили это, так как включили журнал и увидели профилирование.
Бесконечное время истечения работает также хорошо для кэширования пары ключ / значение, используя Yii::app()->cache->set()
или же Yii::app()->cache->get()
Есть идеи, если я делаю что-то не так?
Благодарю.
Согласно документам 0
означает, что кеш отключен.
Просто установите для него какое-то большое значение. Если вам это нужно во многих местах, определите его как константу, чтобы избежать путаницы магическое число антипаттерн, то есть:
define('IMMUTABLE_CACHE', 60 * 60 * 24 * 365 * 100);
$channels = Channels::model()->cache(IMMUTABLE_CACHE);
Других решений пока нет …