直接关闭所有缓存需在配置中禁用模板缓存('template'=>['cache'=>false])、字段缓存('fields_cache'=>false)和数据缓存('cache.default.expire'=>0且驱动非redis/memcached),并确保无手动cache调用。

直接关掉所有缓存,不是靠删文件凑数,而是让框架从源头不写、不读、不编译——否则删完一小时又占满。
关掉模板编译缓存:每次改 HTML 都生效
模板缓存(temp 目录下生成的 PHP 文件)是 runtime 占用增长最快的部分。ThinkPHP6 默认开启,哪怕你只改一行 {:date('Y')},它也会生成新缓存文件。
-
'template' => ['cache' => false]必须写在config/app.php或模块级config.php里,不能只写在view.php - 不要只设
'TMPL_CACHE_ON' => false—— TP6 已废弃这个配置项,设了也无效 - 如果用了多模板引擎(比如同时配了
think和blade),每个引擎都要单独关cache => false
禁用字段缓存和查询缓存:避免 runtime/cache 疯长
数据库字段缓存(DB_FIELD_CACHE)和查询结果缓存(如 Cache::store('file')->set())会持续往 runtime/cache 写文件,尤其在使用模型自动读取字段时,每张表都生成一个缓存文件。
- 在
config/database.php中加:'fields_cache' => false(TP6 正确键名,不是DB_FIELD_CACHE) - 全局禁用数据缓存:把
cache.default.expire设为0,并确保cache.default.type不是redis或memcached—— 否则expire => 0在某些驱动下反而变成“永不过期” - 检查有没有代码手动调用
Cache::remember()或->cache(true),这些会绕过配置直接写缓存
用 php think clear 批量清理,但别无脑跑
php think clear 看似一键,实际默认只清 temp 和 log,cache 目录要加参数才清,且对 Redis 类缓存完全没作用。
- 清全部运行时缓存:
php think clear --all(TP6.1+ 支持;旧版用php think clear --temp --cache --log) - 如果缓存驱动是 Redis,
--all不会清 Redis,得单独执行:redis-cli -h 127.0.0.1 -p 6379 FLUSHDB(注意别用FLUSHALL,可能误清其他应用数据) - 定时任务里别写
* * * * * cd /path/to/project && php think clear --all—— 高频清理会导致 I/O 暴涨,建议只在部署后或低峰期触发
磁盘快爆了?先定位哪个目录在吃空间
别急着 rm -rf runtime/*,先看清楚是哪块在撑:
- 查
runtime/temp:里面全是xxx.php编译文件 → 模板缓存没关死 - 查
runtime/cache:大量小文件(xxxxx.data)→ 字段缓存或手动 Cache 写入太勤 - 查
runtime/log:日志文件巨大 → 是log.level设成了debug且没切分,不是缓存问题 - 查
runtime/trace:开启调试面板后留下的 trace 数据 → 关掉app_debug或清空该目录
真正卡住磁盘的,往往不是缓存本身,而是缓存关不干净 + 日志狂打 + trace 不清理三连击。关缓存只是第一步,后面得盯住 runtime 下每个子目录的实际增长逻辑。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











