ThinkPHP3.2开发模式下默认关闭所有缓存,因APP_DEBUG=true自动禁用编译、模板、字段及行为钩子缓存;需确保该常量在引入框架前正确定义为true,并清除Runtime目录、关闭HTML_CACHE_ON等显式缓存配置以彻底避免意外加载。

ThinkPHP3.2 开发模式下默认开启调试(APP_DEBUG = true),此时框架会自动禁用各类缓存——包括编译缓存、模板缓存、字段缓存和行为钩子缓存。所以“关闭缓存”在开发阶段其实是默认行为,无需额外操作;真正需要关注的是如何确保调试模式生效且缓存确实未被加载。
确认 APP_DEBUG 已正确定义
入口文件 index.php 中必须在引入 ThinkPHP 框架前定义该常量:
- 检查是否写在
require './ThinkPHP/ThinkPHP.php';之前; - 确认值为
true(区分大小写),不能是字符串'true'或数字1; - 避免被其他配置覆盖,例如某些部署脚本可能在后面重定义,导致失效。
验证模板与字段缓存已禁用
调试模式下这两类缓存会自动关闭,但需注意实际表现:
- 修改模板文件(如
Index/index.html)后刷新页面立即生效,说明模板缓存未起作用; - 修改数据库表结构(如新增字段)后,
$Model->getField('new_field')不报错,说明字段缓存已跳过; - 若仍出现“字段不存在”或模板未更新,检查是否误启了
HTML_CACHE_ON或自定义缓存逻辑(静态缓存需单独关闭)。
排查意外启用的缓存项
即使 APP_DEBUG=true,以下配置仍可能触发缓存行为,需手动清理或禁用:
立即学习“PHP免费学习笔记(深入)”;
-
'HTML_CACHE_ON' => true:静态页面缓存,需在config.php中设为false; -
'DATA_CACHE_TYPE'配置了缓存驱动(如 File/Redis)且模型用了cache(true),需检查业务代码中是否显式调用缓存; -
RUNTIME_PATH目录下存在~runtime.php或common~runtime.php:调试模式下这些文件会被忽略,但若权限异常或路径错误,偶尔会误加载,建议直接删除整个Runtime/目录。
查看调试信息确认缓存状态
开启调试后,页面底部会出现 Trace 面板,其中 “缓存” 栏可直观看到:
- 是否有
Template缓存命中记录(有则说明模板缓存未禁用); -
Config加载路径是否包含大量Conf/文件(正常应只读取必要配置,无合并缓存); - SQL 查询旁是否显示
[CACHE](若有,说明查询缓存被主动启用,非框架默认行为)。



















