一、网络瓶颈
1、Github服务器位置
Github服务器的物理位置是在美国,也就是说,无论用户地理位置在哪里,都需要经过长距离的网络传输。
traceroute github.com
1 10.0.0.1
2 192.168.1.1
3 ****** (省略中间路由器)
16 ae1.bb02.sjc01.atlas.cogentco.com
17 38.104.139.210
18 ash-bb3-link.telia.net
19 ash-b1-link.telia.net
20 cloudflare-ic-327307-ash-b1.c.telia.net
21 github.com
通过访问Github返回的IP地址,得知源站点位于美国旧金山,从国内访问需要大量时间,从而导致传输速度慢。
2、国内网络问题
在国内,因为对于Github的限制,访问速度不如国外,也会影响数据的传输。
traceroute github.com
1 10.0.0.1
2 192.168.1.1
3 ****** (省略中间路由器)
16 202.97.49.86
17 27.148.195.130
18 140.205.13.177
19 140.205.81.220
20 140.205.81.116
21 203.208.50.130
22 203.208.50.137
23 203.208.56.181
24 203.208.63.213
25 203.208.60.145
26 185.199.108.153
27 185.199.109.153
从上面traceroute结果可以看出,在16-20跳之间,数据经过了防火墙等相关处理,因为国内的网络政策,做出了限制,导致访问Github变得具有一定困难。
二、资源可用性限制
1、Github官方限制
Github的官方为了维持其资源的稳定性,进行过一系列的限制,如通过CDN分发文件以加快访问速度,但由于其高负载的使用,往往会超出物理服务器的限制,无法提供给用户需要的资源。
2、用户限制
在使用Github再现代码时,用户上传的代码大小也是限制GitHub速度的因素之一。每个仓库都有一个限制,用户只能上传特定大小的文件,如果超出了某一限制,则无法完成上传。整个项目的大小可能有其限制,如Git大小限制为100MB。在超过这个大小时,资源也无法从Github服务器获取,造成了诸如更新和下载等操作缺乏必要的资源支持,造成更新速度慢,下载速度慢等问题。
三、本地环境问题
1、代理问题
由于Github的网站在国内被屏蔽,在访问时可能需要进行代理访问。但在使用代理时,网络连接中会引入额外的缓存限制,所以通过代理访问时,Github速度会受到一定影响。
2、本地网络带宽问题
本地网络带宽过低会导致GitHub资源下载速度变慢,因为本地网络中的速度瓶颈不能满足高速上传下载的要求。
四、解决方案
1、通过访问github加速器解决速度问题(如:cnpmjs.org)
2、加入组织,使用私人库,号为操作可以解决一部分速度问题
3、将仓库迁移到本地gitlab搭建的环境中
4、使用Github Desktop工具,通过直接拉取仓库的方式解决访问限制和速度问题
5、使用CDN加速器缓解主机访问压力(如:优刻得CDN)
五、总结
以上是Github速度慢的原因和解决方案,个人认为从网络瓶颈、资源可用性限制、本地环境问题三方面来看,Github速度慢原因多方面,局限性大。解决方法也需结合自己的具体情况进行策略调整。