【问题标题】:How does the Composer trick with re-defining the packagist repo work?Composer 重新定义 packagegist 存储库的技巧如何工作?
【发布时间】:2015-11-19 13:07:07
【问题描述】:

Composer GitHub 页面上的问题(#3156)讨论“composer is very slow”是suggested

在全局配置中使用 https:// url 重新定义 packagist 存储库:

$ composer config --global repo.packagist composer https://packagist.org

这应该可以解决降级问题,但解决它当然会很有趣。

它确实带来了明显的速度提升。我刚刚针对 Zend Framework 2 进行了测试(参见下面的测试)。

它是如何工作的?(为什么禁用allow_ssl_downgrade 选项会加快处理速度?)


编辑

我运行composer create-project zendframework/zendframework 结合了两个因素:缓存和重新定义packagist 存储库并关闭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 选项实际上有什么作用?(这种“降级”是什么意思?优点和缺点是什么?)

【问题讨论】:

    标签: php configuration composer-php packagist


    【解决方案1】:

    因为第二次运行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 的源代码,我们可以找到this line

    if ($this->allowSslDowngrade) {
        $this->url = str_replace('https://', 'http://', $this->url);
    }
    

    如果allowSslDowngrade = true
    主文件通过 https (see here) 检索,其余通过 http 检索,因为这样更快。通过 sha256 检查其他文件的完整性,这应该足以防止 MITM 攻击。

    如果allowSslDowngrade = false
    一切都通过 https 检索

    测量结果的差异可能是由于 Internet 速度或服务器 cpu/网络负载或其他因素的变化。

    【讨论】:

    • @automatix 我编辑了我的答案希望这能让你明白
    【解决方案2】:

    您是否真的在两者之间清除了缓存?因为这也会显着减少第二次运行时的安装时间。

    我无法通过更改配置和清除中间缓存来产生如此大的差异。

    【讨论】:

    • 是的,这是一个很好的观点。我再次进行了测试并更新了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多