基本不能;自建源仅加速元数据解析,不提升下载速度,因真正瓶颈是http下载环节;仅当内网完全断网、无代理且包数量极固定时才值得自建。

Composer 自建源索引文件能提速吗?基本不能
自建 packages.json 或预生成完整索引文件(如 Satis、Private Packagist)对「下载速度」几乎无提升,它只加速元数据解析阶段,且仅在特定场景下有效。真正卡住 Composer 的从来不是「找包」,而是「下包」——即 HTTP 下载环节。你花一小时生成全量索引,composer install 依然要一个个发起 HTTP 请求去拉 ZIP,和直连镜像源没本质区别。
什么情况下才值得搞自建源?
只有满足全部以下条件时,自建源才有实际价值:
- 公司内网完全无法访问公网(包括阿里云/清华镜像),且不允许任何代理或 HTTPS 出口
- 依赖包数量极固定(
- 所有包都托管在内部 GitLab/SVN,且已统一打 tag、发布 dist 包
- 有专人维护 Satis 或 Private Packagist 实例,并配置了 CDN 缓存和 HTTP/2 支持
否则,你只是把 composer install 的瓶颈从「网络慢」转移到「同步延迟」「索引过期」「权限配置错误」上。常见现象:新包发布后 2 小时内无法安装,报错 Could not find package xxx at version yyy,但其实包早已在官方源上线。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
为什么预编译索引对并发下载无效?
Composer 2.1+ 的并行下载机制(http-max-concurrent-downloads)只控制「同时发起多少个 HTTP 请求」,不关心这些请求发给谁。无论你用 https://mirrors.aliyun.com/composer/ 还是 https://internal-satis.company.com/,只要响应头里带 Content-Length 和 Accept-Ranges,就能并发下载 ZIP;但如果自建源没开 Range 支持,高并发反而触发大量 416 Requested Range Not Satisfiable 错误,最终比串行还慢。
真想提速,优先做这三件事
别碰自建源,直接执行:
- 确认版本:
composer --version≥ 2.1,否则http-max-concurrent-downloads不生效 - 换阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,再跑composer clear-cache - 调并发数:
composer config -g http-max-concurrent-downloads 8(设 10 容易在 CI 环境触发file_put_contents(/tmp/): failed to open stream)
做完这三项,90% 的「下载慢」问题就消失了。自建源是给特殊网络架构兜底的方案,不是提速捷径——它解决的是「能不能下」,不是「快不快」。










