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

时间:2010-04-19 12:43:07

标签: php cakephp caching

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

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

我已经非常有效地停止了我的开发过程,因为缓存不会关闭。任何人都有一些我可以尝试的想法吗?我开始认为它可能在浏览器内或者我的托管服务中,但它可能只是Cakephp搞砸了我。

5 个答案:

答案 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()来执行此操作: