Удалить одну страницу из CFileCache

#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();
  

Это удаляет только файлы кэша с истекшим сроком действия.