所以我在Cakephp应用程序中打开了缓存闸门,现在我要关闭它们......
我已经做了我能做的一切:删除tmp文件夹中的所有文件(但不删除文件夹),在我的应用程序的core.php文件中打开'Cache.disable',尝试清除缓存中的在一些带有clearCache()和Cache :: clear()的控制器中(但我怀疑这不起作用,因为它没有加载控制器 - 由于缓存)。
我已经非常有效地停止了我的开发过程,因为缓存不会关闭。任何人都有一些我可以尝试的想法吗?我开始认为它可能在浏览器内或者我的托管服务中,但它可能只是Cakephp搞砸了我。
答案 0 :(得分: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标头的组合在所有浏览器中都有效,并且还有一些非常积极的缓存代理。
答案 1 :(得分:4)
您可以查看某些元素缓存的控制器代码并将其设置为false。这适用于app_controller.php或Controller / AppController.php,具体取决于您使用的Cake版本。
Controller::cacheAction = false
echo $this->element('latest_comments', array(), array('cache' => false));
您可以尝试在控制器操作中添加Controller::disableCache();
。
答案 2 :(得分:3)
有点长镜头(加上这个帖子很旧,但是很好),但我遇到了类似的问题:我无法让IE退出缓存ajax请求(使用jQuery)。经过多次心痛和头痛之后很简单:
$.ajaxSetup({cache:false});
做了这个伎俩。一定要爱IE ...
答案 3 :(得分:2)
我遇到一个问题,模型被缓存,不再反映表格的架构。
我必须更新我的/config/core.php并设置“debug:2” 这会禁用模型的缓存并修复我的问题。
答案 4 :(得分:0)
https://book.cakephp.org/3.0/en/core-libraries/caching.html#globally-enable-or-disable-cache
静态Cake \ Cache \ Cache ::disable¶ 您可能需要禁用所有Cache read& amp;在尝试找出缓存过期相关问题时写入。您可以使用enable()和disable()来执行此操作: