2009-07-26 98 views
3

即使它是documented,CakePHP在更新模型时会自动清除视图缓存,但它不会。为什么不缓存:: clear()清除我的(查看)缓存? (CakePHP)

重要的是要记住,如果在缓存视图中使用的模型被修改,Cake将清除缓存视图。例如,如果缓存视图使用来自Post模型的数据,并且对Post执行了INSERT,UPDATE或DELETE查询,则会清除该视图的缓存,并在下一个请求中生成新内容。

即使手动调用建议的Cache::clear()方法也不会执行任何操作。如何清除Cake中的视图缓存?

(截至1.2.2.8120版本望着仓库承诺,甚至0.8256应该有这个问题。)

+0

可能与此相关的,我是通过客户端缓存在我的烤指数的观点所困扰。 Firefox,Safari,IE都是问题,Chrome不是。我通过在我的控制器中调用$ this-> disableCache()来修复它。 – the0ther 2010-07-03 04:49:36

回答

3

使用clearCache(),可能会自动在模型afterSave回调:

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

(请同时记录其他可用解决方案,这是我能找到的唯一解决方案。)

+0

你不应该也使用`parent :: afterSave(false);`作为阿齐兹建议在另一个答案? – caesarsol 2013-09-19 15:48:10

0

使用Cache :: clearCache(); 或删除文件,究竟你不想删除

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

这是什么意思“删除确切的文件,你不想删除”? – caesarsol 2013-09-19 15:47:06