composer dump-autoload 用于重建 Composer 自动加载映射,开发时类变动需执行;php artisan optimize 已弃用,Laravel 5.6+ 应改用 config:cache、route:cache 和 view:cache。

这两个命令都跟 Laravel 的自动加载和性能优化有关,但作用不同、适用阶段也不同,现在大多数情况下 php artisan optimize 已被弃用。
composer dump-autoload:重建自动加载映射
它只是让 Composer 重新扫描 composer.json 中定义的 autoload 规则(如 psr-4、classmap),生成或更新 vendor/autoload_*.php 文件。Laravel 启动时靠这个文件快速定位类文件位置。
你改了命名空间、新增了类、调整了目录结构,或者手动修改了 composer.json 的 autoload 配置,就需要运行:
-
composer dump-autoload(开发时常用) -
composer dump-autoload -o(加-o表示优化,生成 classmap,适合生产环境,但 Laravel 默认不用 classmap 加载应用代码)
php artisan optimize:已过时的“打包优化”命令
在 Laravel 5.5 及更早版本中,这个命令会做几件事:
立即学习“PHP免费学习笔记(深入)”;
- 把服务提供者数组合并成一个缓存文件(
bootstrap/cache/services.php) - 把配置文件合并成一个缓存文件(
bootstrap/cache/config.php) - (可选)生成类映射文件(
bootstrap/cache/compiled.php,基于旧版的“编译”逻辑)
但从 Laravel 5.6 开始,compiled.php 被彻底移除;5.5 起官方就建议不再使用 optimize,改用更轻量、按需的缓存方式。
现在运行 php artisan optimize 会提示:Command "optimize" is not defined.
当前推荐的等效操作(Laravel 5.6+)
真正该做的是这三条命令,它们替代了过去 optimize 的核心功能:
-
php artisan config:cache→ 缓存配置(代替 config.php) -
php artisan route:cache→ 缓存路由(大幅提升路由匹配速度) -
php artisan view:cache→ 预编译 Blade 模板(减少运行时解析)
注意:这些命令只应在生产环境运行,且要求所有配置/路由/视图都是可序列化的,不能含闭包或动态逻辑。
两者的关系总结
composer dump-autoload 是底层 PHP 类加载机制的维护命令,任何时候类文件变动都可能需要它;php artisan optimize 是 Laravel 旧版的上层优化封装,现已拆解为更明确、更安全的独立缓存命令。它们不是互斥关系,而是分属不同层级——前者管“类在哪”,后者(及其替代命令)管“怎么更快启动和响应”。
基本上就这些,不复杂但容易忽略区别。











