thinkphp 3.2 开发时需三步关闭缓存:一、配置禁用模板/html/操作/字段缓存;二、降级缓存驱动为 file 并设超时1秒或改用 null;三、清空 runtime 目录并禁止重建。

ThinkPHP 3.2 默认启用多种缓存机制,开发调试阶段若不及时关闭,常导致模板不更新、配置修改无效、SQL语句未刷新等问题。快速关闭全站缓存不是“禁用一个开关”,而是分层清理+配置屏蔽的组合操作,重点在运行时禁用 + 目录清空 + 缓存驱动降级三步到位。
一、直接停用模板与行为缓存(最常用)
在入口文件 index.php 或公共配置文件 Conf/config.php 中,加入以下配置项:
-
'TMPL_CACHE_ON' => false,—— 关闭模板编译缓存(.php 编译文件不再生成) -
'HTML_CACHE_ON' => false,—— 关闭静态页面缓存(避免生成 .html 文件) -
'ACTION_CACHE_ON' => false,—— 关闭操作级缓存(如S()的部分自动行为) -
'DB_FIELDS_CACHE' => false,—— 关闭字段缓存(表结构变更后无需手动删Runtime/Data/_fields_)
二、强制使用无持久化缓存驱动
将缓存方式从 File 切换为 Memcache 或 Redis 并不可取——开发环境往往没装;更稳妥的是改用 xcache 或直接退化为 Null 驱动(TP3.2 支持):
- 在
Conf/config.php中添加:'DATA_CACHE_TYPE' => 'xcache',(需 PHP 已启用 XCache)
或更彻底地:'DATA_CACHE_TYPE' => 'file', 'DATA_CACHE_TIME' => 1,(设极短有效期) - 若追求零缓存效果,可临时替换缓存类:在
Common/Conf/config.php加入'CACHE_TYPE' => 'file', 'CACHE_PATH' => '',并确保Runtime/Cache/目录权限可写,便于后续一键清空
三、一键清空 Runtime 并禁止重建
仅关配置不删文件,旧缓存仍可能被读取。推荐在控制器中加一个调试专用方法(如 Admin/Common/Controller/BaseController.class.php):
- 定义清除函数:
public function clear_runtime() { $this->deldir(RUNTIME_PATH); @mkdir(RUNTIME_PATH, 0755, true); $this->success('Runtime 已清空'); } - 配套递归删除函数(可放
Common/Common/function.php):function deldir($dir) { if (!is_dir($dir)) return false; foreach (scandir($dir) as $file) { if ($file === '.' || $file === '..') continue; $path = $dir . '/' . $file; is_dir($path) ? deldir($path) : unlink($path); } return rmdir($dir); } - 访问
http://yourdomain.com/index.php?s=/Admin/Base/clear_runtime即可秒清全部缓存目录
四、调试期额外建议(防踩坑)
有些缓存不由 TP 控制,但会影响开发体验:
- 浏览器层面:按
Ctrl + F5强制刷新,或在开发者工具 Network 标签中勾选Disable cache - PHP OPcache:若开启,需在
php.ini中设opcache.enable=0或opcache.revalidate_freq=0(重启 Web 服务生效) - Apache/Nginx 缓存头:检查是否误配了
Expires或Cache-Control: max-age,临时注释相关规则
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











