deceze
deceze

Reputation: 521995

Why doesn't Cache::clear() clear my (view) cache? (CakePHP)

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.)

Upvotes: 3

Views: 9085

Answers (2)

Aziz
Aziz

Reputation: 917

use Cache::clearCache();, or use Cache::delete(); to delete only the exact file you no longer want.

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

Upvotes: 0

deceze
deceze

Reputation: 521995

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.)

Upvotes: 3

Related Questions