线上环境应设'route_cache' => false禁用路由缓存而非删除runtime/route.php,同时确认app_debug=false真实生效(var_dump(config('app.app_debug'))输出bool(false)),避免高并发下删文件导致短暂404。

线上环境不能删 runtime/route.php,但可以安全关闭缓存——关键不是“删不删”,而是让框架跳过加载缓存文件、同时不破坏路由可用性。
确认 APP_DEBUG=false 且真实生效
路由缓存和模板缓存只在非调试模式下启用,但很多人改了 .env 却没验证运行时值。必须确认:
- 执行
php -r "var_dump(config('app.app_debug'));"输出是bool(false),不是string(4) "false" -
config/app.php中的'app_debug' => false没被其他配置覆盖(比如中间件里动态设了App::debug(true)) - Web 请求和 CLI 请求用的是同一套配置:检查 PHP-FPM 的
env[APP_DEBUG]是否被显式设置
禁用路由缓存但保留 route.php 文件
直接删 runtime/route.php 在高并发下可能引发短暂 404(重建期间新请求匹配失败)。更稳妥的方式是让框架忽略它:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 在
config/route.php中设置'route_cache' => false(TP6.0+ 支持) - 该配置会让
think\Route::check()跳过include runtime/route.php步骤,转而走实时解析逻辑 -
runtime/route.php文件仍存在,不影响部署一致性,也不会因权限/挂载问题导致写入失败
关模板缓存要动 config/view.php,不是删 view/ 目录
模板不更新常被误判为缓存残留,其实可能是缓存根本没开。操作前先查:
- 确认
config/view.php中'cache' => false已设置(注意不是'tpl_cache' => false,TP6 不识别这个键) - 如果
'cache' => true,那删runtime/view/才有意义;否则删了也没用,目录压根不会生成 - 禁用后,每次渲染都会重新编译模板,性能略降,但开发/灰度期可接受
别碰 cache/ 和 log/ 目录,除非真有脏数据
runtime/cache/ 存的是数据缓存(Redis/File 驱动的内容),runtime/log/ 是日志——它们和路由、模板无关。线上清它们:
- 可能触发大量数据库重查(比如用户 session 缓存失效导致重复登录校验)
- 日志被删会丢失故障线索,尤其在刚上线或出问题时
- 真要清理,用
php think clear:cache(只清 cache/ 下内容),不要用--all
最易被忽略的一点:即使关了所有缓存,OPcache 仍可能缓存 app/route/app.php 的字节码。Nginx + PHP-FPM 环境下,改完路由文件后记得执行 sudo phpphp-fpm -r 或重启 PHP 服务,否则框架读的还是旧文件。这不是 ThinkPHP 的锅,但线上排查时经常卡在这里。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










