thinkphp 6.1 修改模板或路由后不生效,主因是模板编译缓存(runtime/view/)和路由缓存(runtime/route.php)未清除;php think clear 默认不清理这两项,需执行 php think clear -t && php think route:clear 或手动删除对应文件。

ThinkPHP 6.1 修改模板或路由后不生效,多数情况不是代码写错了,而是缓存没清干净——尤其是 模板编译缓存 和 路由缓存 这两个关键项,默认不会被 php think clear 清掉。想真正“彻底清空”,得明确目标、分清类型、选对方式。
一、必须同步清理的两类核心缓存
TP6.1 的 runtime/ 目录下,有两处缓存独立运行、互不影响,但改动任一者都需同时清除另一者:
-
模板编译缓存:位于
runtime/view/,是 .html 模板编译生成的 PHP 文件。改了模板却不刷新页面?大概率卡在这儿。 -
路由缓存:单个文件
runtime/route.php,存储全部注册路由的映射表。新增或修改路由后访问 404?就是它没更新。
注意:php think clear 默认只清 cache/、log/、session/、trace/ 四个子目录,完全不碰 view/ 和 route.php。
二、推荐的一键命令组合(开发环境首选)
进入项目根目录,执行:
php think clear -t && php think route:clear
-
-t参数在 TP6.1+ 中专清模板缓存(即runtime/view/),比--template更简洁; -
route:clear会安全删除并重建runtime/route.php; - 用
&&连接,确保两个操作顺序执行,避免遗漏。
验证是否成功:删完后首次访问任意页面,会稍慢(因重建缓存),但内容和路由应立即反映最新改动。
三、手动清理(无命令行权限或需精准控制时)
适用于 FTP 管理、共享主机等场景,务必按路径操作,避免误删:
-
清模板缓存:打开
runtime/view/,删除该目录下所有子文件夹和 .php 文件,保留view/文件夹本身; -
清路由缓存:直接删除
runtime/route.php这一个文件(不是目录); - 严禁删除 runtime/config/:里面存着数据库连接、中间件等关键配置缓存,删了会导致 Class not found 或数据库连接失败。
四、开发调试中动态触发(仅限本地或部署脚本)
在控制器或自定义命令类中加入以下逻辑(生产环境禁用):
use think\facade\Cache;
use think\facade\Route;
// 清除模板缓存(TP6.1+ 支持)
Cache::store('file')->delete('template_cache');
// 刷新路由定义(自动重建 route.php)
Route::clear();
-
Route::clear()是安全调用,无需手动 require 或 touch 文件; - 该操作会阻塞当前请求并重载全部路由,在高并发生产环境可能引发短暂路由不可用,切勿在用户请求中调用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











