新手thinkphp开发需精准清缓存:先确认缓存驱动(如file、redis),再用php think clear --all清基础缓存,补php think clear:template和php think route:clear清模板与路由缓存,代码中用cache::clear()或cache::store('file')->clear()按配置清理。

新手用ThinkPHP开发时,改完模板或配置却看不到效果,八成是缓存没清干净——文件缓存、模板缓存、路由缓存、标签缓存各自藏在不同地方,乱删 runtime 目录可能让应用直接报错。
先确认你用的是哪种缓存驱动
打开 config/cache.php,找到 'default' => 'file' 这一行。如果值是 redis、memcached 或其他,后面所有清缓存操作都得按对应方式来,【别直接删 runtime/cache/ 就以为万事大吉】。File 驱动才真把文件写进硬盘;Redis 缓存全在内存里,删文件根本没用。
顺手检查 stores 数组里对应驱动的配置,比如 'path' => runtime_path() . 'custom_cache/' —— 如果改过路径,清默认目录等于白忙。
命令行一键清除(推荐新手首选)
在项目根目录执行:
php think clear --all
这条命令会清空 runtime/cache/、runtime/log/、runtime/session/、runtime/trace/,但【不包含 runtime/view/(模板编译缓存)和 runtime/route.php(路由缓存)】。如果你刚改了模板却还是旧页面,说明它没清到点子上。
补上这两步才能真正“全清”:
① 清模板缓存:php think clear:template(TP6.1+ 支持)或手动删 runtime/view/ 全部内容;
② 清路由缓存:php think route:clear(TP6)或删掉 runtime/route.php 文件。
代码里手动清除(适合调试接口)
方法一:只清当前缓存驱动的数据(如 file 或 redis 中的业务缓存)
use think\facade\Cache;
Cache::clear();
这行代码只清 config/cache.php 里 default 指定驱动里的数据,对 runtime/ 下的文件毫无影响。
方法二:显式指定 store 名称,避免 fallback 到 Null 驱动
Cache::store('file')->clear();
如果配置里改了 path,这行代码才会真正去删你设的那个目录,而不是默认的 runtime/cache/。
方法三:清标签缓存(仅当用了 cache(..., ['tag' => 'xxx']))
Cache::tag('user')->clear();
普通 Cache::clear() 对带标签的缓存完全无效——这是新手最容易卡住的地方。
Linux/macOS 下直接删文件(谨慎使用)
确认是单应用且缓存驱动为 file 后,执行:
rm -rf runtime/cache/*
注意:不要用 rm -rf runtime/,【误删 log/ 或 temp/ 会导致日志丢失或模板无法编译】。
多应用模式下路径可能是 runtime/appname/cache/,得逐个清理,或用通配:rm -rf runtime/*/cache/*。
删完立刻验证:运行 var_dump(file_exists(runtime_path() . 'cache/test.php'));,别只信返回 true 就算成功——有些驱动 clear 返回 true,但底层 unlink 失败,文件还在。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











