#caching #yii #yii-components
#кэширование #yii #yii-компоненты
Вопрос:
Я использую CFileCache от Yii.
В моем конфигурационном файле у меня есть:
'components'=>array(
'cache' => array('class' => 'system.caching.CFileCache'),
),
Если я хочу увидеть эффект от изменений данных на сайте, я захожу в административную часть сайта и очищаю кэш с помощью Yii::app()->cache->flush();
.
Есть ли способ удалить только определенную страницу из кэша?
Дополнительный вопрос:
Если я не очищу кэш, сколько времени потребуется для отображения новых данных на веб-сайте?
Просматривая код, значение истечения срока действия по умолчанию в setValue
методе равно 1 году, что кажется ужасно длинным.
Ответ №1:
Да, отвечая на ваш первый вопрос, вы можете удалить определенное значение
Чтобы удалить кэшированное значение из кэша, вызовите delete();
Вы должны быть очень осторожны при вызове flush()
, потому что это также удаляет кэшированные данные из других приложений.
Вы можете установить срок действия, например
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));
срок действия истекает через 30 секунд
Комментарии:
1. Оказывается, страницы кэшировались не CFileCache, а COutputCache. Но поскольку CFileCache был единственным компонентом кэша в конфигурационном файле приложения, я не знал, что COutputCache также использовался.
Ответ №2:
Вы можете установить дату истечения срока действия кэша.
Yii::app()->cache->set('KEY','VALUE',90); //expires after 90 seconds
Также рекомендуется использовать gc
метод. Как официальное определение Yii:
gc() удаляет файлы кэша с истекшим сроком действия.
Например:
Yii::app()->cache->gc();
Это удаляет только файлы кэша с истекшим сроком действия.