清空 laravel 缓存需分层处理:cache:clear 仅清应用缓存;config:clear + config:cache 更新配置;route:clear 和 view:clear 分别清理路由与视图缓存;composer dump-autoload -o 刷新类自动加载。

清空 Laravel 应用缓存要用 php artisan cache:clear
这个命令只清应用层的缓存(比如你用 Cache::put() 存的数据),不影响配置、路由、视图这些编译类缓存。很多人以为它能“一键全清”,结果改了 .env 还是不生效,就是因为配置缓存没动。
常见错误现象:APP_DEBUG=true 改了但页面还是显示生产环境错误页;或者数据库配置更新后连不上,其实是因为 config:cache 生成的缓存还在用旧值。
- 执行前确认当前环境:本地开发建议先
php artisan config:clear,再php artisan cache:clear - 线上环境慎用:如果用了 Redis 或 Memcached 做缓存后端,
cache:clear会清掉所有 key,可能影响其他服务 -
cache:clear不会删除storage/framework/cache/data/目录下的文件(那是文件驱动缓存),得手动删或靠过期自动清理
刷新配置必须跑 php artisan config:clear 和 php artisan config:cache
Laravel 启动时默认加载 bootstrap/cache/config.php(由 config:cache 生成),而不是实时读取 config/ 下的 PHP 文件。所以改完 .env 或某个 config/app.php,不重新生成配置缓存就白改。
使用场景:部署后更新 MAIL_MAILER、切换 Redis 连接、调整日志级别等。
- 开发阶段:只用
php artisan config:clear就够了,不需要config:cache - 生产环境:必须先
config:clear,再config:cache,否则新配置进不去 -
config:cache会把所有config/下的数组合并成一个大数组,不能在配置文件里写闭包或依赖容器的逻辑,否则报错Unable to serialize closure
路由和视图缓存要单独处理
路由缓存和视图缓存是独立机制,cache:clear 对它们完全无效。改了 routes/web.php 或 Blade 模板却没变化,大概率是这两类缓存还挂着。
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
性能影响明显:路由缓存能让 Laravel 跳过整个路由注册流程,提升 20%–30% 的请求启动速度;视图缓存则避免重复编译模板,但会掩盖你在 Blade 里写的语法错误(因为用的是编译后的 PHP 文件)。
- 清路由缓存:
php artisan route:clear(对应bootstrap/cache/routes-v7.php) - 清视图缓存:
php artisan view:clear(清storage/framework/views/下所有.php编译文件) - 生成路由缓存仅支持控制器路由(不能含闭包),运行
php artisan route:cache前最好先route:list确认结构
别漏掉 Composer 自动加载缓存
新增或重命名了类、修改了 composer.json 的 autoload 配置,却提示 Class not found?那可能是 Composer 的 autoloader 缓存没更新。
这个缓存和 Laravel 无关,是 Composer 自己维护的,路径通常在 vendor/composer/autoload_classmap.php 附近。
- 最稳妥做法:
composer dump-autoload(推荐加-o参数优化加载,即composer dump-autoload -o) - 如果用了 PSR-4 映射且只是改了类内容,不改命名空间或路径,一般不用动 autoload
- CI/CD 流程中容易忽略这点:部署脚本只跑了
artisan config:cache,忘了composer dump-autoload,导致新 Controller 找不到
真正麻烦的不是命令记不住,而是分不清哪一层缓存该什么时候清——配置缓存和路由缓存一旦生成,Laravel 就绕过原始 PHP 文件直接读缓存,这时候改源码等于没改。线上操作前最好先 ls -la bootstrap/cache/ 看看哪些文件存在,比盲目清更靠谱。










