Laravel缓存清理需分类型执行:config:clear清配置缓存(bootstrap/cache/config.php),route:clear清路由缓存文件,view:clear清编译视图,cache:clear仅清应用层缓存;混用或漏清会导致404、视图不更新等问题。

Laravel 的缓存清理不是“一键全清”就完事,不同缓存类型必须用对应命令,混用或漏掉某类会导致路由 404、视图不更新、配置未生效等看似“缓存没清干净”的问题。
php artisan config:clear 清的是什么?为什么改了 .env 还不生效?
这个命令只清除 bootstrap/cache/config.php —— 即由 config:cache 生成的配置缓存文件。它和 .env 无关,但会影响 env() 的读取结果:Laravel 在启用配置缓存后,会跳过 .env 解析,直接从缓存数组取值。
- 改了
.env但页面没反应?先运行php artisan config:clear,再运行php artisan config:cache - 本地开发环境通常不需要
config:cache,盲目执行反而掩盖环境差异问题 - CI/CD 部署时务必在
config:cache前确认.env已正确写入,否则缓存会固化错误配置
php artisan route:clear 和 php artisan route:cache 的关系
route:clear 只删除 bootstrap/cache/routes-v7.php(具体后缀随 Laravel 版本变化),它不会重建路由,只是为后续 route:cache 扫清障碍。生产环境启用了路由缓存,但你改了 routes/web.php 却没重新缓存,就会 404。
- 开发中频繁改路由?别用
route:cache,它不支持闭包路由热更新 - 部署脚本里应包含:
php artisan route:clear && php artisan route:cache - Laravel 9+ 默认使用
RouteServiceProvider::loadRoutesFrom()加载路由时,缓存行为不变,但需确保路径存在且可读
php artisan view:clear 清除的是编译后的 Blade 模板
Blade 模板每次请求都会被编译成 PHP 文件,存放在 storage/framework/views/ 下。这些文件不会自动刷新,尤其在 Docker 容器或 NFS 共享卷中,时间戳可能不准,导致改了 .blade.php 却看到旧内容。
- 修改视图后仍显示旧结果?优先跑
php artisan view:clear,不是清浏览器缓存 - 该命令不依赖
APP_DEBUG设置,APP_DEBUG=false时同样有效 - 若
storage/framework/views/权限不对(如 www-data 不可写),view:clear会静默失败,需检查目录权限和 SELinux 上下文(CentOS/RHEL)
一个命令清所有缓存?小心副作用
php artisan cache:clear 只清应用层缓存(如 Cache::put() 存的数据),不影响配置、路由、视图、事件、优化器等其他缓存。网上流传的“一键全清”脚本常误删 storage/framework/cache/data/ 下的文件,可能破坏 Session 或队列重试逻辑。
- 真正需要“全清”时,推荐分步执行:
php artisan config:clear && php artisan route:clear && php artisan view:clear && php artisan cache:clear - 不要手动
rm -rf storage/framework/cache/*,Laravel 的缓存驱动(如 file、redis)结构不同,暴力删除可能导致数据不一致 - 使用 Redis 缓存驱动时,
cache:clear会清空整个 Redis DB,若多个项目共用同一 DB,会误伤其他服务
缓存清理最常出问题的地方不在命令本身,而在执行时机和上下文:Docker 中的多阶段构建是否在正确 layer 清理、共享存储是否同步了 bootstrap/cache/、部署用户是否有 storage/ 写权限——这些比记命令更重要。











