Laravel 生产环境部署后缓存配置命令 artisan optimize 怎么用

文章导读
在生产环境部署中,php artisan optimize 命令实际执行了 composer dump-autoload --optimize 并删除 bootstrap/cache/services.php 文件,这一机制在 2025 年 10 月 16 日的源码解读中被确认。
📋 目录
  1. 原因分析
  2. 解决方案
  3. 注意事项
  4. 参考来源
A A

在生产环境部署中,php artisan optimize 命令实际执行了 composer dump-autoload --optimize 并删除 bootstrap/cache/services.php 文件,这一机制在 2025 年 10 月 16 日的源码解读中被确认。

原因分析

Laravel 默认每次请求需动态解析 routes/web.phpconfig/ 目录下的全部定义,导致路由匹配缓慢及多次 require 调用开销。根据 2026 年 4 月 15 日的技术分析,未缓存时框架需执行 ServiceProvider 的逐行执行与闭包解析过程,而缓存后可直接通过 O(1) 查找完成匹配,显著减少路由匹配开销。

解决方案

1. 生成配置缓存

将所有 config/ 目录下的 PHP 配置文件合并并序列化为单个文件。执行命令:php artisan config:cache。生成的缓存文件位于 bootstrap/cache/config.php,适合生产环境部署(2026 年 4 月 9 日资料)。

2. 生成路由缓存

确认所有路由均定义在 routes/web.phproutes/api.php 中,且无闭包函数。确保 APP_ENV=productionAPP_DEBUG=false,否则命令将被拒绝执行。运行 php artisan route:cache,验证缓存是否生成可检查 bootstrap/cache/routes-v7.php 是否存在(版本号可能为 v8、v9 等)。

3. Laravel 12+ 增强优化

若已升级至 Laravel 12 或更高版本,可运行 composer update 同步核心组件后,执行增强版缓存命令:php artisan route:cache:optimize。该命令会生成带索引哈希表的缓存文件,不兼容任何含运行时条件判断的路由(2026 年 4 月 15 日资料)。

Laravel 生产环境部署后缓存配置命令 artisan optimize 怎么用

注意事项

  • 闭包路由限制:路由缓存不兼容闭包路由,若部署失败,检查 php artisan route:list --compact 输出是否全部为控制器方法格式,而非 Closure。
  • CLI 环境预热:在队列监听器或计划任务中,Laravel 不自动加载路由缓存,需在 app/Providers/AppServiceProvider.phpboot() 方法末尾添加 $this->app->useCachedRoutes();
  • 缓存清除顺序:修改路由后必须先执行 php artisan route:clear 再重新缓存,否则新路由无效。配置修改后需执行 php artisan config:clear 删除 bootstrap/cache/config.php

参考来源

来源:Laravel 框架配置缓存、路由缓存与性能优化配置实践 - 2026 年 4 月 9 日更新

来源:Laravel 怎样利用缓存提升路由解析速度 - 2026 年 4 月 15 日收录

来源:Laravel artisan optimize 源码解读 - 2025 年 10 月 16 日撰