thinkphp 3.2 无 action_cache 缓存机制,该名称属误传或混淆;实际需处理的是 html 静态缓存、模板编译缓存和运行时编译缓存三类。

ThinkPHP 3.2 中并没有内置名为 ACTION_CACHE 的缓存机制。这个名称不属于框架原生配置项,也未出现在官方文档、核心类(如 Dispatcher、Action、View)或常见缓存驱动(File、S()、HTML_CACHE)中。
为什么搜不到 ACTION_CACHE?
该词可能是以下情况的误传或混淆:
- 把 HTML 静态缓存(
HTML_CACHE_ON)误记为 ACTION_CACHE; - 将 行为(Behavior)缓存 或 模板编译缓存 的调试现象理解为“动作级缓存”;
- 项目中自定义的中间件、钩子或控制器层封装逻辑,自行实现了类似“单个 Action 缓存”的功能;
- 与 ThinkPHP 5+ 的
action_cache插件或第三方扩展混淆(TP3.2 不支持)。
真正需要关闭的“动作相关缓存”有哪些?
如果你实际遇到的是某个 Action 响应不更新、视图错乱、数据旧、URL 大小写异常等问题,大概率涉及以下三类缓存,需分别处理:
-
HTML 静态缓存:针对整个页面生成 .shtml 文件,由
HTML_CACHE_ON控制; -
模板编译缓存:将
.html模板编译为 PHP 脚本,存于Runtime/Cache/模块名/下; - 运行时编译缓存(common~runtime.php):合并核心类与函数,在部署模式下自动生成,影响框架加载效率。
逐项关闭方法
1. 关闭 HTML 静态缓存
在模块配置文件(如 Application/Home/Conf/config.php)或主配置(Application/Common/Conf/config.php)中设置:
'HTML_CACHE_ON' => false, 'HTML_CACHE_TIME' => 0, 'HTML_CACHE_RULES' => array(),
同时清空 Html/ 目录(若已启用)。
2. 禁用模板编译缓存
确保以下任一条件成立即可跳过模板编译:
- 开发阶段保持
APP_DEBUG = true(此时模板每次都会重新编译); - 手动删除
Runtime/Cache/模块名/全部内容; - 在配置中显式关闭:
'TMPL_CACHE_ON' => false(TP3.2 支持该选项)。
3. 停用运行时编译缓存
该缓存只在 APP_DEBUG = false 且 Runtime/ 可写时生成。要彻底避免它:
- 开发调试期间始终设为
define('APP_DEBUG', true); - 上线前若需部署,可先清空
Runtime/,再设为 false —— 它仅首次访问生成一次,不主动刷新; - 无需代码干预,只要不满足触发条件(调试开、目录不可写),它就不会出现。
附:快速验证是否还有缓存干扰
执行以下操作后刷新页面,基本可排除常见缓存影响:
- 删除
Runtime/Temp/、Runtime/Cache/、Runtime/Data/、Html/(如有)全部内容; - 确认
index.php中APP_DEBUG为true; - 检查配置中无
HTML_CACHE_ON、TMPL_CACHE_ON开启项; - 查看
Runtime/common~runtime.php是否存在 —— 存在说明编译缓存已激活,但不影响功能,仅提速。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











