路由缓存是runtime/route.php,配置缓存是runtime/config.php,两者位置、生成方式、加载时机和失效逻辑完全不同:route.php编译路由为php数组且不校验源码变更,config.php合并配置文件但易受opcache锁死影响;均需app_debug=false,但路由缓存还依赖文件可读与route_config_file配置正确,配置缓存则必须清理opcache才能生效。

路由缓存是 runtime/route.php,配置缓存是 runtime/config.php
两者文件位置、生成方式、加载时机和失效逻辑完全不同,不能混为一谈。route.php 是把所有路由规则(数组定义 + 注解扫描结果)编译成一个 PHP 返回数组;config.php 则是把 config/ 目录下所有 PHP 配置文件(如 app.php、database.php)合并导出为单个可 require 的 PHP 文件。
路由缓存不校验源码变更,配置缓存受 OpCache 锁死影响更大
route.php 一旦生成,只要文件存在且可读,框架就无条件加载它——哪怕你刚改了 @Route 注解或 route/app.php,也不会自动更新。而 config.php 虽然也会被静态缓存,但更隐蔽的问题是 PHP OpCache:即使你重跑了 php think config:cache,如果 OpCache 没清,require 还是会从 bytecode 缓存里取旧值。
- 查 CLI OpCache 状态:
php -i | grep opcache - 查 Web OpCache 状态:在 phpinfo() 页面确认
- 必须先跑
php think config:cache,再调opcache_reset()或重启 php-fpm
CI/CD 中它们都必须在目标环境现场生成
两个缓存文件都含运行时上下文:route.php 里有 __DIR__ 绝对路径,config.php 里可能有扩展状态判断(如是否启用 redis 扩展)。你在构建机上生成的文件,发到线上后很可能因路径不一致或扩展缺失导致类加载失败或配置错乱。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 部署脚本中要用 Web 进程用户执行:
sudo -u www-data php think route:cache - 确保
runtime/目录属主正确:chown -R www-data:www-data runtime/ - 别用
php think optimize一键打包——它对权限失败静默跳过,你以为全好了,其实route.php根本没写进去
缓存生效的前提条件完全独立
路由缓存启用要看三个硬性条件:APP_DEBUG = false、runtime/route.php 可读、没配错 route_config_file;配置缓存则只依赖 APP_DEBUG = false 和 OpCache 清理到位。两者互不影响,但任一失败都会让对应模块回退到慢路径——比如路由缓存失效,每次请求都要重新扫描注解+解析数组;配置缓存失效,则每次 config('app.app_name') 都要重新 require 一堆 PHP 文件。
最常被忽略的是:你改了 env 文件里的 APP_DEBUG=true,但没动 config/app.php 里的 'app_debug' => true,结果两个缓存都卡在“调试模式禁用”这一步,连生成机会都没有。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










