如何完全禁用Cakephp中的缓存?

21

我在我的Cakephp应用程序中打开了缓存门闸,现在想要关闭它们...

我已经做了尽可能多的事情:删除tmp文件夹中的所有文件(但不包括文件夹),在我的应用程序中的core.php文件中打开了'Cache.disable',尝试通过使用clearCache()和Cache::clear()从某些控制器中清除缓存(但我怀疑这不起作用,因为它没有加载控制器-可能是由于缓存)。

由于缓存无法关闭,我几乎完全停止了我的开发过程。有人有什么想法吗?我开始认为可能是浏览器或我的托管服务的问题,但可能只是Cakephp在捣鬼。


你尝试过清除浏览器缓存吗?另外,你是如何判断应用程序是否被缓存的?请记住,即使关闭了缓存,/tmp/cache 中仍会有文件,因为模型始终会被缓存。 - David Yell
我尝试评估缓存的方法是在视图中插入一个“hi”,并查看是否在重新加载后以及清空浏览器缓存后出现。顺便说一句,我已经找到了问题所在,但现在我不知道该如何处理它:即使我禁用了所有可以找到的缓存功能,视图缓存文件仍然会在每次手动删除后重新出现...为什么它仍然会缓存视图? - James Lamiell
也许可以尝试在配置中将debug:0设置为调试模式,因为我知道debug:2会在每次请求时重新生成所有内容。否则可能是文件只读,或者您的FTP客户端没有正确报告文件夹?这只是一个想法:) - David Yell
5个回答

13
为了排除浏览器缓存导致的问题,你可以尝试添加以下几行代码:
header('Cache-Control: no-store, private, no-cache, must-revalidate');                  // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);    // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                                       // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: no-cache');

根据我的经验,所有这些缓存破坏的HTTP头部组合在所有浏览器中都有效,并且还可以绕过一些非常强大的缓存代理。


我应该在哪里添加这些代码行?先谢谢了。 - scruffycoder86

4
你可以查看控制器代码,寻找一些元素缓存并将它们设置为false。这适用于app_controller.php或Controller/AppController.php,具体取决于你使用的Cake版本。
Controller::cacheAction = false

echo $this->element('latest_comments', array(), array('cache' => false));

你可以在控制器操作中添加Controller::disableCache();来尝试解决此问题。

1
我认为应该是 echo $this->element('latest_comments',array(), array('cache' => false)); - Rob Sawyer
在CakePHP 2中,您的AppController的公共$cacheAction变量应设置为false。 - Vael Victus

3

有点冒险(而且这个帖子已经很老了,但是没关系),但我遇到了类似的问题:我无法让IE停止缓存ajax请求(使用jQuery)。经过长时间的痛苦和头痛,一个简单的解决方法:

$.ajaxSetup({cache:false});

做到了。IE 真是让人爱不释手啊...

3
如果有什么事情,那对于 IE 来说反而是好事。这是 jQuery,不是 Cake。 - 472084

2

我曾经遇到过一个问题,就是模型被缓存了,不再反映表的模式。

我必须更新我的/config/core.php文件,并设置“debug:2”,这会禁用我的模型缓存并解决我的问题。


这个程序可以完成任务,但也会有意想不到的效果,比如在页面上显示详细的错误信息、SQL语句等。Debug mode 2适用于开发,Debug mode 0适用于生产(公开展示)。关于当前任务,请参考https://dev59.com/3FbUa4cB1Zd3GeqPC-MM,更多解释请查看https://dev59.com/cXA75IYBdhLWcg3wxsJn#3118292。 - user216084

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接