Кеширование DAO

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
vadim525
Сообщения: 47
Зарегистрирован: 2011.11.06, 03:13
Откуда: СПб
Контактная информация:

Кеширование DAO

Сообщение vadim525 »

Всем привет, помогите разобраться!

в конфиге подключен Memcache

Код: Выделить всё

        'cache'=>array(
            'class'=>'system.caching.CMemCache',
            'servers'=>array(
                array('host'=>'127.0.0.1', 'port'=>11211, 'weight'=>100),
            ),
        ),
Делаю такой запрос

Код: Выделить всё

$sql = "SELECT * FROM books";
$res = Yii::app()->db->cache(3600, new CDbCacheDependency($sql))->createCommand($sql)->query();
Я вывожу на страницу список запросов, и этот запрос всегда есть.
как мне понять запрос закешировался или нет?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Кеширование DAO

Сообщение ElisDN »

Вы же в CDbCacheDependency его же указали. Вот он там и выполняется.
Аватара пользователя
vadim525
Сообщения: 47
Зарегистрирован: 2011.11.06, 03:13
Откуда: СПб
Контактная информация:

Re: Кеширование DAO

Сообщение vadim525 »

даже если пишу так

Код: Выделить всё

$sql = "SELECT * FROM `books`";
$res = Yii::app()->db->cache(3600)->createCommand($sql)->query();
результат тот же, запрос происходит каждый раз
Аватара пользователя
vadim525
Сообщения: 47
Зарегистрирован: 2011.11.06, 03:13
Откуда: СПб
Контактная информация:

Re: Кеширование DAO

Сообщение vadim525 »

и какой тогда профит от кеширования через CDbCacheDependency, если запросы всё равно выполняются,
что тогда кешируется?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Кеширование DAO

Сообщение ElisDN »

vadim525 писал(а):и какой тогда профит от кеширования через CDbCacheDependency, если запросы всё равно выполняются,
что тогда кешируется?
Кешируется сложный запрос "SELECT большая куча данных из пяти таблиц", валидность которого в DbDependency проверяется лёгким "SELECT MAX(updated_at) FROM table".
Аватара пользователя
vadim525
Сообщения: 47
Зарегистрирован: 2011.11.06, 03:13
Откуда: СПб
Контактная информация:

Re: Кеширование DAO

Сообщение vadim525 »

vadim525 писал(а):даже если пишу так

Код: Выделить всё

$sql = "SELECT * FROM `books`";
$res = Yii::app()->db->cache(3600)->createCommand($sql)->query();
 
результат тот же, запрос происходит каждый раз
так почему при такой записи запрос не кешируется?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Кеширование DAO

Сообщение ElisDN »

vadim525 писал(а):так почему при такой записи запрос не кешируется?
А остальное через Yii::app()->cache кешируется?
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Кеширование DAO

Сообщение Onotole »

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