Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Cakephp中完全禁用缓存?_Php_Cakephp_Caching - Fatal编程技术网

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

如何在Cakephp中完全禁用缓存?,php,cakephp,caching,Php,Cakephp,Caching,所以我在Cakephp应用程序中打开了缓存闸门,现在我想关闭它们 我已经做了几乎所有我能做的事情:删除tmp文件夹中的所有文件(但不是文件夹),在我的应用程序的core.php文件中打开“Cache.disable”,尝试使用clearCache()和Cache::clear()从一些控制器中清除缓存(但我怀疑这不起作用,因为它没有加载控制器——由于缓存) 我实际上已经停止了我的开发过程,只是因为缓存不会关闭。有人有我可以试试的想法吗?我开始认为它可能在浏览器中,也可能在我的托管服务中,但可能只

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

我已经做了几乎所有我能做的事情:删除tmp文件夹中的所有文件(但不是文件夹),在我的应用程序的core.php文件中打开“Cache.disable”,尝试使用clearCache()和Cache::clear()从一些控制器中清除缓存(但我怀疑这不起作用,因为它没有加载控制器——由于缓存)


我实际上已经停止了我的开发过程,只是因为缓存不会关闭。有人有我可以试试的想法吗?我开始认为它可能在浏览器中,也可能在我的托管服务中,但可能只是Cakephp搞乱了我。

要排除浏览器缓存是根本原因,您可以尝试添加以下行:

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头的组合在所有浏览器中都有效,并且还绕过了一些非常激进的缓存代理。

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

我必须更新我的/config/core.php并设置“debug:2” 这将禁用我的模型缓存并修复我的问题

有点长(加上这个线程很旧,但是很好),但我有一个类似的问题:我无法让IE停止缓存ajax请求(使用jQuery)。在经历了许多心痛和头痛之后,一个简单的问题是:

$.ajaxSetup({cache:false});

成功了。必须喜欢IE…

您可以在控制器代码中查找一些元素缓存,并将它们设置为false。这适用于app_controller.php或controller/AppController.php,具体取决于您使用的蛋糕版本

Controller::cacheAction = false

echo $this->element('latest_comments', array(), array('cache' => false));
您可以尝试添加
Controller::disableCache()在控制器操作中。

静态蛋糕\Cache\Cache::disable» 在试图解决与缓存过期相关的问题时,可能需要禁用所有缓存读写。可以使用enable()和disable()执行此操作:


您是否尝试过清除浏览器缓存?另外,您如何评估它是否正在缓存您的应用程序?请记住,即使关闭了缓存,/tmp/cache中仍会有文件,因为模型总是被缓存的。我尝试评估它是否缓存的方法是在视图中插入hi,并查看它是否在重新加载后出现,是的,清空浏览器缓存。顺便说一句,我已经解决了这个问题,但现在我不知道如何处理它:每次手动删除后,视图缓存文件都会重新出现。。。即使我发现所有缓存功能都已禁用。尽管如此,为什么它仍在缓存视图?也许可以在配置中设置debug:0进行尝试,因为我知道debug:2将在每个请求上重新生成所有内容。否则,文件可能是只读的,或者ftp客户端无法正确报告文件夹?只是一个想法:)如果有的话,这对IE来说是件好事。这是jQuery,不是Cake。我认为它应该是
echo$this->element('latest_comments',array(),array('cache'=>false))@RobSawyer谢谢。更新的answer.public$cacheAction=false;对于CakePHP中的AppController,这会完成任务,但也会产生意外的效果,在页面上显示详细的错误、SQL语句等。调试模式2适合于开发,调试模式0适合于生产(公共视图)。有关当前任务,请参阅,有关说明,请参阅。我可以在哪里添加这些代码行?提前感谢。