开发阶段每次改模板或路由后必清,测试环境每日凌晨清一次,生产环境严禁高频全量清理,只对日志和文件缓存按时间筛选保留最近7天。

ThinkPHP日常维护中缓存清理频率不能靠经验拍脑袋,必须按缓存类型、环境角色和变更节奏分层设定:开发阶段每次改模板或路由后必清,测试环境每日凌晨清一次,生产环境严禁高频全量清理,只对日志和文件缓存按时间筛选保留最近7天。
开发环境:改完就清,不等下次请求
修改了控制器逻辑、模板文件或数据库字段后,必须立刻执行清理,否则会看到旧页面或报错Class not found。这一步操作起来很简单,直接在项目根目录运行php think clear -t即可——【-t参数专清模板缓存,不碰log和route,避免清完404】。如果同时改了路由规则,要额外补一句php think route:clear,否则新URL仍返回404。别信“等它自动过期”,TP的模板缓存默认不过期,不手动清就永远卡在旧编译文件上。
测试环境:固定时间自动清理,避开业务高峰
测试环境需模拟真实流量压力,但又不能干扰人工测试。建议用系统cron在每天凌晨3:15执行清理任务:
第一步:编辑crontab:crontab -e
第二步:添加行:15 3 * * * cd /var/www/project && /usr/bin/php think clear --all >> /var/log/think-clear.log 2>&1
第三步:确认PHP路径正确(用which php查),否则定时任务会静默失败
第四步:手动跑一次php think clear --all验证是否真能删掉runtime/cache/下的.php文件
注意:不要设成每小时执行,频繁清空会掩盖缓存穿透问题,导致上线后突发雪崩。
生产环境:只删旧文件,不动热数据
生产环境禁止执行php think clear --all或rm -rf runtime/cache/——这会导致刚生成的用户会话丢失、首页首屏变慢10倍以上。真正该做的,是写一个自定义命令,只删7天前的日志和24小时前的文件缓存:
方法一:用内置命令快速过滤find runtime/log/ -name "*.log" -mtime +7 -deletefind runtime/cache/ -name "*.php" -mtime +1 -delete
方法二:用自定义命令更安全(推荐)
在app/command/ClearOldFiles.php里写逻辑,调用$this->clearOldFiles($logPath, 7 * 86400, '/\.log$/')——【filemtime()判断修改时间,不依赖文件名日期,防日志轮转被篡改导致误删】
方法三:Redis缓存不删,只刷新关键key
比如用户登录态缓存用Cache::store('redis')->set('user:1001:token', $newToken, 7200)覆盖,而不是FLUSHDB。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











