Удаление кеш фрагментов

Ребята хелпаните, несрабатыват удаление кеша по ключу.

Уже даже удалялку поставил перед проверкой, все равно, кешируется раз в минуту, и держит в кеше, пока не стухнет…




Yii::app()->cache->delete('GroupPanel');

	

if($this->beginCache('GroupPanel',array(

'duration'=>60

))) {


	... Blah blah blah ...

		

$this->endCache(); }

Yii::endProfile('GroupPanel');



Используйте duration

http://www.yiiframework.com/doc/guide/caching.fragment#duration




...other HTML content...

<?php if($this->beginCache('GroupPanel', array('duration'=>60))) { ?>

...content to be cached...

<?php $this->endCache(); } ?>

...other HTML content...



естественно я использую дюрейшн, но задача - долгоиграющее хранение, с сбросом кеша по запросу. Нехочется делать 6 малких sql запросов, ради того чтобы проверить "вдруг чето изменилось", проще при изменении внутренней информации давать команду на флеш кеша

Попробуй так:


if($this->beginCache('GroupPanel',array(

'duration'=>60,

'dependency'=>array(

     'class'=>'CExpressionDependency',

     'expression'=>time(),

),

))) {


        ... Blah blah blah ...

                

$this->endCache(); }

Yii::endProfile('GroupPanel');

сам не пробовал, но согласно документации должно работать

только при такой конструкции лучше кеш вообще не ставить :slight_smile:

Так а что тут должно работать :)))

Мне нужно чтобы: $someclass->delete(Мой ключ);

и фрагмент кеша умирает, но это не срабатывает с фрагментарным кешированием, только с классическим

beginCache->COutputCache:




/**

 * Prefix to the keys for storing cached data

 */

const CACHE_KEY_PREFIX='Yii.COutputCache.';



Удаляете не по тому ключу.

Вот как я меню закешировал:


        

if($this->beginCache('menu', array('duration'=>2000000, 'varyByRoute'=>false))) {

            $this->widget('application.components.widgets.menu.menu');

            $this->endCache();

}

тут главное ‘varyByRoute’=>false

удаление


Yii::app()->cache->delete('Yii.COutputCache.menu......');

Не спрашивайте откуда столько точек, сами посмотрите метод COutputCache::getCacheKey() :lol:

/надо бы это переопределить как-нибудь по-проще