ThinkPHP3.2部署模式下视图编译缓存默认开启,需配置'TMPL_CACHE_ON'=>false彻底关闭;同时应禁用'HTML_CACHE_ON'以防混淆,验证时需清空Runtime/Cache和Runtime/Html并确认无新PHP缓存文件生成。

ThinkPHP3.2 的视图缓存默认在调试模式(APP_DEBUG = true)下是关闭的,但一旦切换到部署模式(APP_DEBUG = false),框架会自动启用模板编译缓存(即视图层缓存),生成如 Runtime/Cache/模块名/控制器名@操作名.php 这类文件。要真正关闭它,不能只停用 HTML 静态缓存,而需从模板编译机制本身入手。
确认当前是否启用视图编译缓存
视图编译缓存由 TMPL_CACHE_ON 配置项控制,默认为 true(仅在部署模式下生效)。即使你没显式配置,只要 APP_DEBUG = false,该缓存就处于激活状态。检查方式:
- 打开
Application/Runtime/Cache/目录,若存在 PHP 编译后的模板文件(非 .html),说明视图编译缓存已启用 - 查看入口文件中
define('APP_DEBUG', ...)的值——若为 false,则视图缓存默认开启
关闭模板编译缓存(核心方法)
在项目配置文件中(推荐放在 Application/Common/Conf/config.php)添加以下配置:
'TMPL_CACHE_ON' => false,
该设置将彻底禁用模板文件的自动编译与缓存,每次请求都会重新解析原始模板(.html 或 .php 视图文件),适合开发调试或模板频繁变动的场景。注意:此配置在 APP_DEBUG = true 时无效(因为调试模式本就关闭它);只有部署模式下才起实际作用。
立即学习“PHP免费学习笔记(深入)”;
补充:关闭静态 HTML 缓存(避免混淆)
很多人误把“HTML 静态缓存”当成视图缓存。它属于页面级输出缓存,和模板编译无关。若你也启用了它(通过 HTML_CACHE_ON),请一并关闭:
'HTML_CACHE_ON' => false,
否则即使模板不编译,访问过的页面仍可能被保存为 Html/xxx.html 并直接返回,造成“改了模板却看不到效果”的假象。
验证是否关闭成功
完成配置后执行以下步骤验证:
- 手动删除
Runtime/Cache/和Runtime/Html/全部内容 - 确保
APP_DEBUG = false(模拟生产环境) - 刷新页面多次,再检查
Runtime/Cache/目录——不应再出现任何新生成的 PHP 缓存文件 - 修改一个视图文件(如
Index/index.html),保存后立即刷新浏览器,应实时生效
不复杂但容易忽略



















