用于众所周知的原因,Stackoverflow,Github等技术相关网站在国内访问速度一直不快,Composer 也不例外。
有什么方法可以让它变得快一点。
一、心理上变快
在 Drupal Composer 系列一:初识中,提到过在 Composer 相关命令后加 -vvv,它应该可以让人从心理上感觉 Composer 快了不少。至少在“动”,而不是“卡”在那里。
二、使用镜像:Packagist / Composer 中国全量镜像
和其他类似工具一样,如 NPM, 在国内有免费镜像可以使用。Composer 镜像则推荐使用 Packagist / Composer 中国全量镜像。
它的使用方式很简单,一行命令即可:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
以上是全局的方式,其他使用方式请参考其官网文档。
使用镜像有一点不足是,偶尔可能会有滞后,在使用的时候有的依赖还没有被同步过来。
三、使用开源软件 toran 自建 Composer 镜像服务器:
镜像服务器也可以称为代理服务器,在这里不加区别。
如果已经安装了 docker 和 docker-compose,部署一个 Composer 镜像服务器就是一个配置文件加一行命令的事。
还有一个前提是需要有一个在国外的服务器。
一个配置文件即 docker-compose.yml,示例内容如下:
version: "2"
services:
toran:
image: cedvan/toran-proxy:1.5.4
container_name: toran
volumes:
- ./data:/data/toran-proxy
ports:
- 80:80
environment:
- TORAN_HOST=packagist.jungleran.com
- TORAN_CRON_TIMER=hour
- TORAN_AUTH_ENABLE=true
- TORAN_AUTH_USER=jungle
- TORAN_AUTH_PASSWORD=jungle
Toran Docker 镜像链接:
一条命令即
docker-compose up -d
然后一个属于的自己 Composer 镜像服务器就架好了。
使用自定义镜像服务器时,composer.json 文件示例配置如下:
{
"name": "jungle/demo",
"description": "demo",
"type": "project",
"repositories": [
{
"type": "composer",
"url": "http://packagist.jungleran.com/repo/packagist/"
},
{"packagist": false}
],
"config": {
"secure-http": false,
"http-basic": {
"packagist.iegio.com": {
"username": "jungle",
"password": "jungle"
}
}
}
}
关键在 repositories 和 config 部分,其中:
示例中没有配置 https,所以设置 secure-http 为 false
示例中的 Toren 服务器启用了简单的密码保护,阻止未授权的访问,账号密码均为:jungle,在 composer.json 文件中,其对应的设置为 http-basic 部分
packagist.jungleran.com 则为服务器的访问地址(仅为示例地址,实际不存在)
当前,我自己有在使用自建镜像服务器。
四、更快:并行
Composer 本身并不支持并行,有人已经开发了一个 Composer 插件,可以实现并行。
项目代码库:
https://github.com/hirak/prestissimo
安装:
composer global require hirak/prestissimo
以上是全局安装,更多请访问该项目文档。