Composer不会自动清除旧缓存,但可通过配置post-update-cmd事件在更新后自动清理。例如在composer.json中添加脚本:{"scripts": {"post-update-cmd": ["echo '清理旧缓存...'", "rm -rf var/cache/*", "php bin/console cache:clear"]}},适用于Symfony项目;若为Laravel,则替换为php artisan config:clear等命令。还可通过PHP脚本判断环境,仅在生产环境执行清理,避免影响开发效率。更推荐在CI/CD或部署脚本中统一处理缓存清除,确保彻底性与可控性。

Composer 本身在更新包时不会自动删除旧的缓存文件,但你可以通过配置 脚本事件(scripts) 在每次更新后自动执行清理操作。这样就能实现“更新后自动清除旧缓存”的效果。
1. 使用 Composer 的 post-update-cmd 事件
你可以在项目的 composer.json 文件中添加一个脚本,在每次运行 composer update 后自动触发缓存清理。
{
"scripts": {
"post-update-cmd": [
"echo '清理旧缓存...'",
"rm -rf var/cache/*",
"php bin/console cache:clear"
]
}
}
说明:
- post-update-cmd 是 Composer 提供的钩子,会在 update 命令完成后执行。
- 上面的例子适用于 Symfony 项目,可根据你的框架调整命令。
- 如果你使用 Laravel,可改为:php artisan config:clear 或 php artisan cache:clear。
2. 针对不同环境做判断(可选)
如果你只想在生产环境清理缓存,可以写一个 PHP 脚本进行判断,避免开发环境频繁清缓存影响效率。
{
"scripts": {
"post-update-cmd": [
"App\\Script\\ClearCache::run"
]
}
}
然后创建一个类:
3. 利用操作系统或部署流程补充(推荐)
除了 Composer 脚本,更稳妥的方式是在部署脚本中统一处理,比如在 CI/CD 流程或 deploy.sh 中加入:
rm -rf bootstrap/cache/*.phpphp artisan config:clear
php artisan route:clear
这样能确保所有缓存被彻底清理,不受 Composer 执行环境限制。
基本上就这些。Composer 不会自动删缓存,但通过 post-update-cmd 脚本完全可以实现自动化。关键是根据你的项目结构选择合适的清理命令,并注意区分环境。










