前景提要
前言
GitHub 应该是广大开发者最常去的站点,这里面有大量的优秀项目,是广大开发者寻找资源,交友学习的好地方。尤其是前段时间 GitHub 公布了一项代码存档计划——Arctic Code Vault,要把代码埋入地下 250 米深的永久冻土层,可以将代码保存一千年。此外,GitHub 还为开发者在配置文件中设计了纪念徽章。
想想自己的代码可以作为人类的技术瑰宝被保存一千年,是不是有点自豪呢。
好了,言归正传。
虽然 GitHub 没有被 Q,但是由于 CDN 服务器都在国外,所以国内访问 GitHub 的速度实在是慢的一匹,有时候经常页面刷不出,在我获取知识的道路上增加了重重的阻碍。
所以,我肝了 3 小时,写了一个在不用 T 子的情况下,加速 GitHub 访问速度的小工具,最后会分享给大家。
同时,这篇文章也会分享其他加速 GitHub 访问的方法。算是一个比较全的整理吧。
Let's get it!
自动生成最快访问 host 的小工具
GitHub 在国内访问速度慢的原因其实有很多,但最主要的原因就是 GitHub 的分发加速网络域名遭到 DNS 的污染。为了解决这个问题,网上有很多文章提供了一个解决方案,就是通过修改 Hosts 文件,绕过国内的 DNS 解析,直接访问 GitHub 的 CDN 节点,从而达到加速的目的。
但是我看大多数关于此方法的介绍,只提供 3 个 github 的相关域名,而且需要在 ipaddress.com 一个个去查,根据查到的 ip,再去自己 ping,肉眼选取最快的 ip,自行编辑成 IP+域名格式,贴到 hosts 文件里。
其实 GitHub 用到相关域名有很多,我整理了下,一共有十几个 github.global.ssl.fastly.net github.com assets-cdn.github.com documentcloud.github.com gist.github.com help.github.com nodeload.github.com codeload.github.com raw.github.com status.github.com training.github.com avatars0.githubusercontent.com avatars1.githubusercontent.com avatars2.githubusercontent.com avatars3.githubusercontent.com
这要是一个个去查,一个个去选取,也是挺麻烦的。
为此我写了一个工具,能自动的根据你当前 ip,去寻找这十几个域名所对应最快的 CDN 节点,如果一个 ip 对应多个 CDN 节点,工具会自动帮你去 ping 10 次,取到平均值最小的 CDN 的 IP 地址。
你需要做的,只是把最终生成的结果贴到你的 hosts 文件中即可。
这个小工具,关注「元人部落」输入 github 即可获取到。
用法很简单,只需要执行以下命令即可运行 java -jar githubhost.jar
运行起来后,浏览器输入 127.0.0.1:8880 即可自动进行根据你当前 Ip 进行分析:
分析大概需要十几秒,进度条会自动刷新,等进度条满了之后,即可看到生成内容:
每个地区每个运营商可能运行出来的都不一样,所以得出结果后,你就可以把这段内容追加到你 hosts 文件中(如果不知道 hosts 存放位置,可以自行 baidu),然后根据提示让 hosts 文件生效。
指定了 CDN 的访问地址,可以让你的 github 访问至少无卡顿了。
码云 GitHub 镜像站
码云提供了一个”码云急速下载“站,每天从 github 上同步一些项目。 https://gitee.com/mirrors
个人感觉应该不是所有的 github 项目都会同步过来,看仓库数量,有大概 15k 的项目
如果你想 clone 一些项目去研究,可以先在这里找找有没有。码云因为是国内开源项目站点,git clone 速度自然不用担心,但是很可惜的是
1.这个镜像站点不是所有的 github 项目,不过大多数热门项目都会有
2.issue 和 release 包也没有,只有代码
3.有一天的延迟。即你看到的是一天前的项目状态
4.因为不是 github,所以你也没法通过这个 push 到 github 上的项目
GitHub 镜像站
这个镜像站为: https://github.com.cnpmjs.org/
进入之后,完全和 github 没有任何区别,访问也很快。
尤其是 clone 代码,那是飞快啊。。。
比如,你原先要 clone,这样写 git clone https://github.com/kubernetes/kubernetes.git
现在改成: git clone https://github.com.cnpmjs.org/kubernetes/kubernetes.git
试一下:
这个速度,应该无欲无求了吧。。。
不过这个方法可惜的是:
1.这个镜像站很不稳定,你时常会看到:
2.你每次 clone 还需要自己去修改 url,有点不方便
3.你依旧没法 push
GitClone 站点
在寻找解决之道的途中,我又发现一个站点:gitclone https://gitclone.com/
这是一个 GitHub 的缓存加速节点,也大约缓存了 15k 个项目,但是 gitclone 单独做了一个站点,里面可以进行搜索项目,甚至于还可以创建仓库。
gitclone 的 clone 提供了多种方式来 clone
但是搜索到的项目,最终查看还是跳转到 GitHub 相应的页面。
所以其实和 gitee 镜像站都差不多。换汤不换药,问题和之前几个镜像站点差不多,不过你只是要 clone,还是不错的选择。
总结
其实在不用 T 子的情况下,方式无非就两种: 修改 hosts,直接访问最快的 CDN 节点,这种方式优势在于原汁原味。 通过镜像去访问和 clone,这种方式优势在于 clone 的速度。
个人推荐如果主要浏览为主,还是用上文推荐的工具去生成 hosts 进行配置,毕竟原汁原味,clone 大项目的话,可以考虑以上镜像站点去加速下载。
关注作者
最后把这个开源工具分享给大家,关注「元人部落」公众号,并回复 github 即可获取到这个工具 jar 包。启动后访问 127.0.0.1:8880 端口即可自动生成。
一个坚持做原创的技术科技分享号,希望你能关注我,我每周会出一篇实用的原创技术文章,陪着你一起走,不再害怕。