--no-cache 仅跳过 ~/.composer/cache/ 的 dist 和 metadata 缓存,不跳过 vendor/、composer.lock、platform-check 或插件缓存;常用于调试下载失败或验证网络拉取,但需配合 clear-cache、删除 vendor/ 和 composer.lock 才能实现真正“从零开始”。

为什么 --no-cache 有时并不真正禁用缓存
直接加 --no-cache 参数看似能跳过本地缓存,但 Composer 实际仍可能读取 vendor/ 中已安装的包或依赖锁文件(composer.lock)里的版本约束。它只跳过 ~/.composer/cache/ 下的 dist 和 metadata 缓存,不跳过已安装代码、lock 文件解析、或平台配置缓存(如 platform-check)。常见现象是:明明加了 --no-cache,执行 composer install 还是秒完成——因为 vendor/ 已存在且 composer.lock 未变。
--no-cache 的真实作用范围和典型使用场景
该参数仅影响 Composer 下载阶段的缓存行为,适用于以下情况:
- 调试包下载失败(比如 CDN 临时不可达,想强制重拉 dist 包而非读缓存)
- 验证某次构建是否真的走网络(CI 环境中确认缓存未污染)
- 排查因缓存损坏导致的
corrupted archive错误
它不会跳过 composer.lock 解析、不会清空 vendor/、也不会忽略 platform-check 或插件缓存。若想彻底“从零开始”,需配合其他操作。
真正绕过所有缓存的组合操作
单靠 --no-cache 不够,必须叠加以下步骤才能接近“干净环境”:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先运行
composer clear-cache清掉~/.composer/cache/(--no-cache不会做这事) - 删掉
vendor/目录(否则install直接复用) - 删掉
composer.lock(否则版本锁定仍生效;若保留 lock,则必须加--ignore-platform-reqs才可能触发重新解析) - 再执行
composer install --no-cache或composer update --no-cache
注意:composer update --no-cache 仍会读取 composer.json 和当前 vendor/ 状态来计算差异,不是“重装全部”。真要重装,rm -rf vendor && composer install --no-cache 更可靠。
容易被忽略的兼容性与性能代价
--no-cache 在 CI/CD 中常用,但有隐性成本:
- 每次都会重新下载 dist 包(.zip/.tar.gz),显著拖慢构建速度,尤其在低带宽或高并发环境下
- 某些私有仓库若未配置
repositories的cache-dir或启用packagist.org镜像,--no-cache可能触发大量 404 或超时 - PHP 8.2+ 下部分插件(如
hirak/prestissimo已废弃)会与--no-cache冲突,报Class not found
真正需要的是明确目标:是排除缓存干扰调试?还是确保构建可重现?前者用 --no-cache + clear-cache;后者更应依赖 composer.lock + 固定 PHP 版本 + 容器镜像,而不是靠禁用缓存来“假装干净”。










