ThinkPHP开发中应关闭调试模式(APP_DEBUG=false)后再清理缓存,按需执行php think clear --temp、--cache或php think clear:route;启用template.auto_release=true实现模板自动刷新,并用软链接将runtime指向/dev/shm提升清理速度。

ThinkPHP开发中每次改完代码都要手动清缓存,反复执行php think clear或删runtime目录,既打断开发节奏又容易漏清某类缓存导致行为异常——这不是操作习惯问题,而是缓存策略没对齐开发阶段的真实需求。
关闭调试模式下的无效缓存
APP_DEBUG=true时,框架会跳过所有缓存加载逻辑,包括模板编译、路由缓存、配置缓存;此时你删runtime/temp或执行php think clear:route,实际毫无作用,纯属白忙活。
确认当前调试状态:在任意控制器中写dump(\think\App::debug());,输出true即表示缓存被强制绕过。
【必须先将APP_DEBUG设为false再测试缓存行为】,否则所有清理动作都是在模拟环境里做无用功。
立即学习“PHP免费学习笔记(深入)”;
按需清除特定缓存而非全盘扫荡
方法一:只清模板编译缓存(改了.html或.php模板文件后)→ 执行php think clear --temp
方法二:只清数据缓存(改了Cache::get()相关逻辑后)→ 执行php think clear --cache
方法三:只清路由缓存(增删了@Route注解或修改了route.php)→ 执行php think clear:route
这三种命令互不干扰,比php think clear少删log、trace等无关文件,避免误清调试日志导致问题追溯困难。
启用缓存自动刷新机制
第一步:确保template配置中开启'auto_release' => true,该选项让框架在检测到模板文件mtime变更时自动重建编译缓存,无需人工干预。
第二步:在config/app.php中设置'app_status' => 'dev',配合'check_template' => true,使模板校验仅在开发态生效,上线后自动关闭。
第三步:对高频变动的配置项(如数据库连接参数),改用.env变量驱动,避免修改config/database.php后必须清配置缓存——因为.env变更不触发配置缓存失效,但php think optimize:config生成的缓存文件仍会读取最新.env值。
注意:auto_release仅对模板有效,路由和数据缓存不支持自动刷新,这两类仍需主动清理。
用符号链接隔离开发与缓存路径
将runtime目录软链到内存盘或tmpfs分区:比如Linux下执行rm -rf runtime && ln -s /dev/shm/myapp-runtime runtime。
这样每次php think clear实际只清内存中的临时文件,速度提升3~5倍,且系统重启后自动清空,杜绝残留。
【务必确认/dev/shm有足够空间,否则运行时报错无法写入】



















