Как Composer трюк с переопределением Packagist репо работает?
В проблеме (#3156) обсуждение " композитор идет очень медленно " на странице Composer GitHub предлагается
переопределить пакетное хранилище с помощью https:// url в глобальной конфигурации, используя:
$ composer config --global repo.packagist composer https://packagist.org
Это должно обойти проблему понижения рейтинга, но было бы интересно, конечно, решить ее.
Это действительно приносит ощутимый прирост скорости. Я только что проверил это для Zend Framework 2 (см. Тест ниже).
Как это работает? (Почему отключение allow_ssl_downgrade
вариант ускорить процесс?)
РЕДАКТИРОВАТЬ
я бегу composer create-project zendframework/zendframework
объединяя два фактора: кеш и переопределение репозитория с поворотом allow_ssl_downgrade
выкл. Я получил следующие результаты для получающихся четырех случаев:
Конфиги по умолчанию:
config: default ([repositories.packagist.url] https?://packagist.org, [repositories.packagist.allow_ssl_downgrade] true)
cache: empty (composer clear-cache)
result: 3m38s
config: default ([repositories.packagist.url] https?://packagist.org, [repositories.packagist.allow_ssl_downgrade] true)
cache: not empty
result: 54s
config: changed ([repositories.packagist.url] https://packagist.org)
cache: empty (composer clear-cache)
result: 3m34s
config: changed ([repositories.packagist.url] https://packagist.org)
cache: not empty
result: 56s
Резюме: "хитрость" с отключением allow_ssl_downgrade
не приносит ускорения.
Тем не менее, было бы неплохо узнать: allow_ssl_downgrade
вариант на самом деле делать? (Что означает это "понижение"? Каковы преимущества и недостатки?)
2 ответа
Потому что во второй раз вы бежите composer create-project zendframework/zendframework
он взял все из кеша композитора вместо того, чтобы загрузить его снова!
Вы можете видеть, что он выводит что-то вроде следующего, где он говорит Loading from cache
если вы запустите его во второй раз:
Installing zendframework/zendframework (2.5.2)
- Installing zendframework/zendframework (2.5.2)
Loading from cache
Не забудьте запустить composer clear-cache
между вашими тестами, чтобы получить надежные результаты.
РЕДАКТИРОВАТЬ//
Если мы посмотрим на исходный код Composer, мы можем найти эту строку:
if ($this->allowSslDowngrade) {
$this->url = str_replace('https://', 'http://', $this->url);
}
Если allowSslDowngrade = true
Основной файл извлекается через https ( см. Здесь), остальные через http, потому что это намного быстрее. Целостность других файлов проверяется через sha256, который должен быть достаточной защитой от MITM-атак.
Если allowSslDowngrade = false
Все извлекается через https
Различия в ваших измерениях могут быть результатом различий в скорости Интернета или загрузки процессора / сети сервера или чего-то еще.
Вы действительно очистили свой кеш между ними? Потому что это также значительно уменьшит время установки при втором запуске.
Я не смог создать такую большую разницу, изменив конфигурацию и очистив кеш между ними.