github访问及clone过慢问题

墙相关

前言

Github是开源世界的一扇大门,伟大的墙对GitHub网开一面,没有像对Google那样直接斩尽杀绝,但是对它做了严格的限速。
git clone(有些地区较快,有些地区较慢);但总体来说,基本都在10KiB/s-40KiB/s之间。
在拉取Flutter源码时出现5-9KiB/s的情况,所以有了这篇文章

修改端口

首先需要打开ShadowSocks,我不会配置全局模式,一是每月流量问题,二是访问一些国内网站反而会慢,所以对于PAC自动模式来说可以如下配置

git config --global http.https://github.com.proxy https://127.0.0.1:xxxx

git config --global https.https://github.com.proxy https://127.0.0.1:xxxx

其中端口号,可以在ShadowSocks上查找socks5端口,然后就享受40M/s的畅快吧。

指定IP

如果修改端口的方法也无济于事,还可以通过指定host的方式,指定最近dns服务商以达到快速的效果。

DNS工作方式

当我们访问github.com时,浏览器并不知道这个域名对应的真实ip地址,最先回去询问本地dns缓存,是否认识这个域名的门牌号,如果不认识接着往上问,当地运行商也不认识这个域名的话,继续问上级,知道问出来github.com的门牌号为止!
这个问路过程称为DNS寻址,如果问路的时间过长,那么返回速度自然很慢。
那么如果我们直接告诉浏览器目的地,那么浏览器也就不会一步步去问路了,所以也就能达到加快访问速度的要求。

正常来说,网站的主域名下会存在多个子域名,由这些域名组合在一起提供完整的服务。所以我们不仅要告诉本机github.com的主域名,还要把相关的子域名也告诉本机。就像现实中,每个人都有自己的家,而这个家有具体的地址,一些有钱人可能有几个家。

对应到计算机世界中,如果域名是用户,那么ip地址就是用户的家,同一个域名可以对应多个ip地址,同一个ip地址也可以有多多个域名。
域名到ip地址的过程同样需要找人询问,这个信息一般会存在dns服务商那里,就像我们的地址登记到相关机构一样.

子域名信息

ipaddress.com 网站为例,查询下 github.com 网站的相关信息。得到如下域名信息。

ip_subdomain

就近cdn加速

大型网站服务器都不会只有一台服务器,而是多台服务器组成集群一起对外提供服务。全世界都在使用 ** github,如果每次都访问美国服务器,即使浏览器知道目的地,但是距离太远还是会很慢,所以能够就近访问github.com**就能大幅提高访问速度了。
tool.chinaz.com 网站为例,查询下 github.com 各子域名的就近地址。

ip_dns_speed

所以只需要选择TTL值最小的作为优化标准,并写入/etc/hosts(macOS)文件中

# github related website 
13.250.177.223 github.com
31.13.83.8 github.global.ssl.fastly.net
203.98.7.65 gist.github.com
13.229.189.0 codeload.github.com
185.199.109.153 desktop.github.com
185.199.108.153 guides.github.com
185.199.108.153 blog.github.com
18.204.240.114 status.github.com
185.199.108.153 developer.github.com
185.199.108.153 services.github.com
140.82.113.22 enterprise.github.com
34.195.49.195 education.github.com
185.199.108.153 pages.github.com
34.196.237.103 classroom.github.com

最后进行dns刷新 sudo dscacheutil -flushcache

作者

8MilesRD

发布于

2019-07-16

更新于

2020-09-17

许可协议

评论