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

2022-08-30 20:05:42

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

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

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


答案 1

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

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


答案 2

您可以在控制器代码中查找某些元素缓存,并将其设置为 false。这适用于app_controller.php或控制器/应用程序控制器.php具体取决于您使用的 Cake 版本。

Controller::cacheAction = false

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

您可以尝试添加控制器操作。Controller::disableCache();


推荐