CakePHP1.2でキャッシュが消えない
CakePHP の自動キャッシュクリアが効くのは、コントローラ名=モデル名のときだけ : akiyan.com
↑という時用 behaviorsで指定すれば多少ましかもしれないと思った。
たとえばPostモデルってのがあるんだけど、Postモデルにsave()かdelete()があったときにはトップページのtopっていうアクションのビューも削除して欲しいって時には。
post.php
PHP:
として
以下のコードをclear_cache.phpとかで/models/behaviorsに保存しておけば
PHP:
-
<?php
-
/*
-
* キャッシュクリア
-
*/
-
class ClearCacheBehavior extends ModelBehavior {
-
-
-
$this->names = $config['names'];
-
}
-
-
function afterSave($created){
-
$this->_clear();
-
}
-
-
function afterDelete(){
-
$this->_clear();
-
}
-
-
function _clear(){
-
foreach($this->names as $name){
-
clearCache($name);
-
}
-
}
-
-
}
-
?>
Postモデルが更新されるたびにtopのビューキャッシュもクリアされて
いいと思います
まとめ
あと、CakePHPのビューのキャッシュはアクション名ベース(?)なので?id=99みたいなGETパラメータには対応していないとかもあるので、いっそビューのキャッシュはあきらめるというのも手です。