前言

GitHub应该是广大开发者最常去的站点,这里面有大量的优秀项目,是广大开发者寻找资源,交友学习的好地方。尤其是前段时间GitHub公布了一项代码存档计划——Arctic Code Vault,要把代码埋入地下250米深的永久冻土层,可以将代码保存一千年。此外,GitHub 还为开发者在配置文件中设计了纪念徽章。

想想自己的代码可以作为人类的技术瑰宝被保存一千年,是不是有点自豪呢。

好了,言归正传。

虽然GitHub没有被墙,但是由于CDN服务器都在国外,所以国内访问GitHub的速度实在是慢的一匹,有时候经常页面刷不出,在我获取知识的道路上增加了重重的阻碍。

所以,我肝了3小时,写了一个在不用梯子的情况下,加速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,还是不错的选择。

总结

其实在不用梯子的情况下,方式无非就两种:

  1. 修改hosts,直接访问最快的CDN节点,这种方式优势在于原汁原味。
  2. 通过镜像去访问和clone,这种方式优势在于clone的速度。

个人推荐如果主要浏览为主,还是用上文推荐的工具去生成hosts进行配置,毕竟原汁原味,clone大项目的话,可以考虑以上镜像站点去加速下载。

关注作者

最后把这个开源工具分享给大家,关注「元人部落」公众号,并回复github即可获取到这个工具jar包。启动后访问127.0.0.1:8880端口即可自动生成。

一个坚持做原创的技术科技分享号,希望你能关注我,我每周会出一篇实用的原创技术文章,陪着你一起走,不再害怕。

访问github太慢?我写了一个开源小工具一键变快的更多相关文章

  1. 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)

    用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气

  2. 性能测试工具Locust,一个开源性能测试工具

    性能测试工具Locust,一个开源性能测试工具使用Python代码来定义用户行为.用它可以模拟百万计的并发用户访问你的系统.1.它与目前主流的LoadRunner和Jmeter玩法都不一样.2.它完全 ...

  3. #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验

    #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验 一.续上前言 关于这个小玩意的产品思考,假设我暂时把他叫我是月老热心人 这是一个没有中心的关系链,每个人进入以后都是以自己为中 ...

  4. JDK9版本以上Java独有的一个轻量级小工具,你知道吗?jshell

    jshell,是JavaJDK9这个大版本更新以来,带来的一个轻量级小工具.我们再也不用进入Java目录,编写一个Java文件,然后再去编译,最后才能执行它. 这里,你可以直接写一个小功能,就能去实现 ...

  5. 基于百度通用翻译API的一个翻译小工具

    前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...

  6. 用 pyqt4 编写的一个翻译小工具

    有时候我们在开发时遇到一些陌生的英文单词或者不容易看出某些长句的中文意思时该怎么办呢?打开桌面上的翻译软件?打开浏览器里收藏着的翻译网址或者直接贴上百度的搜索框去查?这些方法固然可以,还很常见,但如果 ...

  7. 开源小工具 - swagger API访问代码生成器(js/typescript)

    现在流行前后端分离,后端通常会使用swagger生成api文档,提供给前端的同事来调用,一般前端是查看这个文档,根据文档说明编写调用代码.其实,swagger已经提供了足够多的描述信息,我们可以基于s ...

  8. 使用abp框架与vue一步一步写我是月老的小工具(1)

    一.前言 因为工作的原因,我真正写代码的时间很少,技术面广但深度一直不够,兴趣广泛但缺乏专业精神.以前一直想用asp.net写一款框架,用来在企业开发过程中做一些基础工作,不过后来我找到abp这个框架 ...

  9. React自己写的一个地图小组件

    由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只 ...

随机推荐

  1. Python列表截取

    Python列表截取: 使用索引下标查看列表元素: lst = ['a','b','c','d','e','f','g','h'] print(lst[0]) # a print(lst[3]) # ...

  2. MapReduce之Combiner合并

    Combiner是MR程序中Mapper和Reducer之外的一种组件(本质是一个Reducer类) Combinr组件的父类就是Reducer Conbimer只有在驱动类里设置了之后,才会运行 C ...

  3. PHP arsort() 函数

    ------------恢复内容开始------------ 实例 对关联数组按照键值进行降序排序: <?php$age=array("Peter"=>"35 ...

  4. PHP expm1() 函数

    实例 返回 exp() - 1: <?phpecho(expm1(0) . "<br>");echo(expm1(1) . "<br>&qu ...

  5. 解决痛苦的方法/cy

    这篇文章 源于我所有痛苦的回忆. 由于痛苦太多了 体会完了 所以 觉得这些都不算是什么大问题了 所以 这里 是解决痛苦的方法. 真的很痛苦的话 可以这样 对着全班人喊你们 都没我强 因为 你们都没有我 ...

  6. sqlzoo刷题 SELECT from Nobel Tutorial

    SELECT from Nobel Tutorial 1.Change the query shown so that it displays Nobel prizes for 1950. SELEC ...

  7. python8.3多进程

    from multiprocessing import Processimport time def run1 (name,sex): print(name,sex,"执行进程1" ...

  8. 用python分析1225万条淘宝数据,终于搞清楚了我的交易行为

    大家好,我是黄同学

  9. CSS品控与流程

    精通CSS意味着不仅能写出可用的标记和样式,还能让代码好阅读.方便移植.易维护. 1.外部代码质量:调试CSS 外部代理质量就是用户能体验到的最终结果.主要体现在几个方面. 正确性.CSS属性名都写对 ...

  10. java JDBC工具类

    package com.oracle.tools; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...