thinkphp 3.2 页面缓存禁用需三步:全局配置关闭html_cache_on=>false,运行时调用c('html_cache_on', false)动态禁用,手动清空runtime/html/目录文件。

ThinkPHP 3.2 中的“页面缓存”通常指静态 HTML 缓存(HTML_CACHE_ON),它会将控制器输出生成物理 HTML 文件,后续请求直接读取该文件,跳过 PHP 执行和数据库查询。若需彻底禁用页面缓存,不能只靠清空 Runtime 目录,而要从配置、运行时控制和特殊场景三方面入手。
全局关闭静态缓存开关
在项目主配置文件(如 Application/Common/Conf/config.php)中,将以下配置设为 false:
-
'HTML_CACHE_ON' => false,—— 关闭静态缓存总开关 -
'HTML_CACHE_TIME' => 0,—— 即使误开,设为 0 表示不缓存(但依赖开关优先级) - 可选:删除或注释掉
'HTML_CACHE_RULES'配置项,避免规则干扰
运行时动态关闭(按需控制)
某些页面(如 404、登录页、用户中心)需要每次动态生成,可在对应控制器方法开头强制关闭缓存:
- 调用
C('HTML_CACHE_ON', false);立即禁用当前请求的静态缓存 - 建议放在
display()或show()前,例如:
C('HTML_CACHE_ON', false);
header("HTTP/1.0 404 Not Found");
$this->display('Public:404');
exit;
}
清除已生成的缓存文件
关闭配置后,旧缓存文件仍存在,可能被 Web 服务器直接返回。需手动清理 Runtime/Html/ 目录:
- 路径通常为:
Application/Runtime/Html/(由HTML_PATH定义决定) - 可写一个快捷方法,比如在控制器中添加:
$htmlPath = RUNTIME_PATH . 'Html/';
if (is_dir($htmlPath)) {
array_map('unlink', glob($htmlPath . '*'));
@rmdir($htmlPath); // 清空后删空目录
}
$this->success('HTML 缓存已清空');
}
确认无其他缓存层干扰
TP3.2 本身不处理浏览器缓存或代理缓存,但实际部署中需额外注意:
- 检查是否启用了
Output Cache(如 Apache 的 mod_cache、Nginx 的 proxy_cache) - 控制器中可加响应头防止浏览器缓存(开发调试用):
header("Cache-Control: no-cache, must-revalidate");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); - 确保未启用
DATA_CACHE_TYPE查询缓存影响页面逻辑(那是另一层,不影响 HTML 输出)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











