thinkphp 8.0缓存分层,需按类型精准清除:模板缓存用php think clear:template或删runtime/view/;路由缓存用php think clear:route并重建;配置缓存需php think config:cache+刷新opcache;同时排查浏览器及nginx静态资源缓存。

缓存清理后页面仍是旧的,不是“没清干净”,而是你可能只清了其中一层,而 ThinkPHP 8.0 的缓存是分层、分类型、分驱动的——模板、路由、配置、模型查询、标签缓存各自独立,互不干扰。必须按需定位,精准清除。
先确认是不是模板缓存没清
php think clear --all 默认不删 runtime/view/ 下的编译模板文件,改了 HTML 或 PHP 模板却看不到效果,大概率是它在作祟。
- 直接删整个目录:
rm -rf runtime/view/(Linux/macOS)或rd /s /q runtime\view(Windows) - TP6.1+ 可用命令:
php think clear:template,更安全,推荐线上使用 - 开发时临时禁用:在
config/template.php中设'cache' => false,或设'cache_time' => 0让框架每次比对源文件修改时间
检查路由缓存是否残留
新增或修改了路由规则(尤其是注解路由),但访问 404 或仍走旧路径,说明 runtime/route.php 还在生效。
- 执行
php think clear:route,它会清掉runtime/cache/route.php及关联临时文件 - 再重建:
php think route:cache --annotation(用了注解路由必须加--annotation) - 注意前提:
APP_DEBUG必须为false,且runtime/目录可写;否则命令静默失败
配置没更新?可能是 config 缓存 + OpCache 双重锁定
改了 .env 或 config/app.php,config('app.app_name') 还是旧值,常见于生产环境。
- 先删缓存配置文件:
rm -f runtime/config.php - 再强制重建:
php think config:cache(确保APP_DEBUG=false) - 最后刷新 PHP OpCache:
sudo systemctl reload php*-fpm或调用opcache_reset()
别忽略浏览器和 Web 服务器缓存
服务端缓存都清了,但用户看到的还是旧页面,很可能是静态资源被强缓存住了。
- 检查 Nginx 是否把
/static/请求错交给 PHP 处理:确保location ^~ /static/在所有~ \.php$规则之前 - 给 CSS/JS 加哈希版本号:用
mix('css/app.css')(需手动封装 mix() 函数)或filemtime(public_path('css/app.css'))拼 URL 参数 - 临时验证:在 URL 后加随机参数,如
?v=123,看是否变新;若变了,就是前端缓存问题
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











