3
votes

Even though it's documented that CakePHP will automatically clear the view caches when a model is updated, it doesn't.

It is important to remember that Cake will clear a cached view if a model used in the cached view is modified. For example, if a cached view uses data from the Post model, and there has been an INSERT, UPDATE, or DELETE query made to a Post, the cache for that view is cleared, and new content is generated on the next request.

Even calling the suggested Cache::clear() method manually does nothing. How do I clear the view cache in Cake?

(As of version 1.2.2.8120. Looking at the repository commits, even .8256 should have this problem.)

2
possibly related to this, i was plagued by client-side caching in my baked index views. firefox, safari, IE were all problems, chrome was not. i fixed it by calling $this->disableCache() in my controllers. - Randy L

2 Answers

3
votes

Use clearCache(), possibly automatically in a model afterSave callback:

// model file:
function afterSave($created) {
    clearCache();
}

(Please also document other available solutions, this is the only one I could find.)

0
votes

use Cache::clearCache(); or delete exactly file you don't want to delete

function afterSave($created)
{
  parent::afterSave(false);
  Cache::delete('left_menu_eng');
}