訪問github太慢?我寫了一個開源小工具一鍵變快

鉑賽東發表於2020-08-24

file

前言

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進行分析:

file

分析大概需要十幾秒,進度條會自動重新整理,等進度條滿了之後,即可看到生成內容:

file

每個地區每個運營商可能執行出來的都不一樣,所以得出結果後,你就可以把這段內容追加到你hosts檔案中(如果不知道hosts存放位置,可以自行baidu),然後根據提示讓hosts檔案生效。

指定了CDN的訪問地址,可以讓你的github訪問至少無卡頓了。

碼雲GitHub映象站

碼雲提供了一個”碼雲急速下載“站,每天從github上同步一些專案。

https://gitee.com/mirrors

個人感覺應該不是所有的github專案都會同步過來,看倉庫數量,有大概15k的專案

file

如果你想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

試一下:

file

這個速度,應該無慾無求了吧。。。

不過這個方法可惜的是:

1.這個映象站很不穩定,你時常會看到:

file

2.你每次clone還需要自己去修改url,有點不方便

3.你依舊沒法push

GitClone站點

在尋找解決之道的途中,我又發現一個站點:gitclone

https://gitclone.com/

file

這是一個GitHub的快取加速節點,也大約快取了15k個專案,但是gitclone單獨做了一個站點,裡面可以進行搜尋專案,甚至於還可以建立倉庫。

gitclone的clone提供了多種方式來clone

file

但是搜尋到的專案,最終檢視還是跳轉到GitHub相應的頁面。

所以其實和gitee映象站都差不多。換湯不換藥,問題和之前幾個映象站點差不多,不過你只是要clone,還是不錯的選擇。

總結

其實在不用梯子的情況下,方式無非就兩種:

  1. 修改hosts,直接訪問最快的CDN節點,這種方式優勢在於原汁原味。
  2. 通過映象去訪問和clone,這種方式優勢在於clone的速度。

個人推薦如果主要瀏覽為主,還是用上文推薦的工具去生成hosts進行配置,畢竟原汁原味,clone大專案的話,可以考慮以上映象站點去加速下載。

關注作者

最後把這個開源工具分享給大家,關注「元人部落」公眾號,並回復github即可獲取到這個工具jar包。啟動後訪問127.0.0.1:8880埠即可自動生成。

一個堅持做原創的技術科技分享號,希望你能關注我,我每週會出一篇實用的原創技術文章,陪著你一起走,不再害怕。

img

相關文章