Как 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

Различия в ваших измерениях могут быть результатом различий в скорости Интернета или загрузки процессора / сети сервера или чего-то еще.

Вы действительно очистили свой кеш между ними? Потому что это также значительно уменьшит время установки при втором запуске.

Я не смог создать такую ​​большую разницу, изменив конфигурацию и очистив кеш между ними.

Другие вопросы по тегам