2013-08-23 3 views
0

Если я хочу использовать Query Caching, как в учебнике здесь:кэш запросов в YII

Yii Query Caching Guide

ли я должен иметь UPDATE_TIME поле в каждой таблице?

$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post'); 

Должно ли существовать поле, чтобы использовать кеш запросов?

ответ

2

В руководстве приведен пример, как вы можете использовать зависимость кеша с кешированием запросов, но зависимость не является обязательной. Если вы его используете, вы можете найти свой собственный SQL, чтобы узнать, сохраняется ли кешированный контент. Поэтому поле update_time также не является обязательным.

0

Чтобы ответить на ваш вопрос, как уже писал Майкл, это необязательно. Чтобы узнать больше об этом, вы должны понимать роль, которую играет запрос зависимости.

Рассмотрим пример. Вы хотите кэшировать запрос, в котором будут перечислены все пользователи. Что-то вроде SELECT * FROM users. Предположим, что в любой момент времени это 100 пользователей.

Теперь главный вопрос, когда, по вашему мнению, ваши данные в кеше становятся недействительными? Всякий раз, когда новый пользователь добавляется, вам нужно повторно запросить (не использовать данные кэширования данных/недействительные данные кэша). Как найти нового пользователя? Выполняя запрос идентификационного номера. Поэтому, если запрос SELECT MAX(ID) FROM Users возвращает другое значение, это означает, что новый пользователь был добавлен.

Запомнить Если пользователь удален, тогда мой пример недействителен. В этот раз, после удаления пользователя, вы должны удалить соответствующие данные кэша.

Таким образом, вы должны найти соответствующие Запросы, которые могут использоваться для проверки данных кэша.

Смежные вопросы