概述
提升GitHub的体验, 主要是下面几个方面的提升
- 无障碍访问
github.io域名的网站 - 无障碍加载GitHub的静态资源, 比如图片
- 通过cdn快速获取GitHub可获取的资源
无障碍访问github.io
之前访问xxx.github.io这类GitHub Pages的网站的时候总出现404的情况, 甚至连挂梯子都没用, 这是非常不合理的。后来在V2EX上面有老哥提到了一个很难被发现的问题, 国内的电信运营商污染DNS。往常我以为它们就喜欢搞一些广告什么的, 结果非常的操蛋。之后就ping了一下herberthe.github.io我自己的GitHub Pages, 非常amazing啊结果是127.0.0.1。关于hosts和DNS这些不了解的话, 建议直接百度, 这里就不解释了。
我们访问github.io这类域名的网站通常需要经历的过程拓扑为: 本地局域网 --- 运营商网络(就不区分各层局域网了) --- 公网 --- 目标的DNS服务 --- 目标服务器
以www.baidu.com为例, 咱们用tracert追踪一下路由跳转情况(使用的Windows cmd), 其中标注的ip路由数据来源于ip318和站长之家的站长工具, 也可能不是很准确
通过最多 30 个跃点跟踪
到 www.a.shifen.com [14.215.177.38] 的路由:
1 <1 毫秒 <1 毫秒 <1 毫秒 OPENWRT [192.168.7.1] // 路由器
2 2 ms 1 ms <1 毫秒 192.168.1.1 // 本地网关
3 3 ms 4 ms 2 ms 100.100.128.1 // 保留地址 NAT局域网
4 4 ms 5 ms 4 ms 61.132.183.81 // 安徽省 宣城市 电信
5 5 ms 12 ms 8 ms 202.102.219.81 // 安徽省 合肥市 电信
6 * * * 请求超时。
7 38 ms * * 113.96.4.90 // 广东省 广州市 电信
8 * 29 ms 30 ms 113.96.11.78 // 广东省 广州市 电信
9 26 ms 25 ms 26 ms 121.14.67.146 // 广东省 广州市 电信
10 * * * 请求超时。
11 25 ms 25 ms 25 ms 14.215.177.38 // 广东省 广州市 电信 idc机房以github.com为例
通过最多 30 个跃点跟踪
到 github.com [140.82.112.3] 的路由:
1 1 ms <1 毫秒 1 ms OPENWRT [192.168.7.1] // 路由器
2 3 ms 2 ms 1 ms 192.168.1.1 // 本地网关
3 4 ms 3 ms 4 ms 100.100.128.1 // 保留地址 NAT局域网
4 6 ms 3 ms 5 ms 60.173.80.49 // 安徽省 宣城市 电信
5 8 ms 8 ms 7 ms 61.132.190.169 // 安徽省 合肥市 电信
6 20 ms 22 ms 21 ms 202.97.96.181 // 上海市 中国电信骨干网接入点
7 30 ms 29 ms 30 ms 202.97.24.190 // 中国 电信骨干网
8 16 ms 16 ms 15 ms 202.97.12.190 // 中国 电信骨干网
9 227 ms * 221 ms 202.97.74.98 // 中国 电信骨干网
10 228 ms 239 ms 229 ms 118.85.205.246 // 中国 电信骨干网
11 270 ms 269 ms 269 ms ae1.cs1.ams17.nl.eth.zayo.com [64.125.29.78] // 美国 zayo集团骨干网
12 262 ms * * ae4.cs3.ams10.nl.eth.zayo.com [64.125.28.37] // 美国 zayo集团骨干网
13 * 271 ms * ae10.cs1.lhr15.uk.eth.zayo.com [64.125.29.17] // 美国 zayo集团骨干网
14 * * * 请求超时。
15 * * * 请求超时。
16 * * * 请求超时。
17 271 ms 270 ms * ae1.ter1.iad10.us.zip.zayo.com [64.125.25.137] // 美国 zayo集团骨干网
18 266 ms 271 ms 268 ms 209.66.120.181.IPYX-243981-004-ZYO.zip.zayo.com [209.66.120.181] // 美国 纽约州威彻斯特县怀**莱恩市abovenet通信股份有限公司
19 * * * 请求超时。
20 * * * 请求超时。
21 * * * 请求超时。
22 279 ms 279 ms 278 ms github.com [140.82.112.3] // 美国 华盛顿州西雅图github公司如果运营商在中间搞鬼的话, 就算挂梯子也没办法绕过, 因此需要修改映射公网的DNS。类似8.8.8.8和114.114.114.114这些公用DNS大家都比较了解, 但是使用的人并不少, 体验也并没有提升多少。在这里建议使用AliDNS的公用DNS做替代, 我寻思阿里不会那么闲去污染GitHub的DNS
遵循AliDNS的教程, 在运营商污染DNS这一块的问题基本上已经解决了, 如果还是访问不了的话, 很可能是被墙了。那一波就在中国电信骨干网的GFW了, 只能各显神通了, 正常的话不会这样的。
无障碍加载GitHub的静态资源
经常有这么个情况, GitHub访问没问题, 但是头像还有README.md里面的图片加载不出来, 因为GitHub的静态资源不是github.com这个域名
而很可能是下面这些
github.githubassets.com
camo.githubusercontent.com
github.map.fastly.net
github.global.ssl.fastly.net
gist.github.com
github.io
github.com
api.github.com
raw.githubusercontent.com
user-images.githubusercontent.com
favicons.githubusercontent.com
avatars5.githubusercontent.com
avatars4.githubusercontent.com
avatars3.githubusercontent.com
avatars2.githubusercontent.com
avatars1.githubusercontent.com
avatars0.githubusercontent.com
codeload.github.com
github-cloud.s3.amazonaws.com
github-com.s3.amazonaws.com
github-production-release-asset-2e65be.s3.amazonaws.com
github-production-user-asset-6210df.s3.amazonaws.com
github-production-repository-file-5c1aeb.s3.amazonaws.com
githubstatus.com
github.community最简单的方法其实是挂梯子, 不过也可以通过修改hosts文件的方法来改。在类Unix平台比较简单, 也就是vim /etc/hosts的事情。但是要一个个找IP是个非常操蛋的事情。。
在此建议参考这个项目 GitHub520, 然后参考教程使用 SwitchHosts! 这个开源软件解决hosts修改的问题
不过GitHub520那个项目是GitHub Action实现的, 可能存在能用但是不是最快的节点的情况, 实在不行就自己部署更新也没啥问题
通过cdn快速获取GitHub可获取的资源
上面那些解决了, 咱们使用GitHub基本上没啥问题了。但是, GitHub Release和GitHub仓库下载的速度非常的难受!!!
在nbc这个项目的实践过程中就屡次被这个问题搞得非常恼火, 油猴上面其实有针对GitHub专门写了一些插件, 也专门有一些cdn来提高GitHub下载慢的情况, 下面是一些总结也可以用于开发
获取分支资源
正常情况下, GitHub的仓库分支资源其实是不能单独下载的, 那咋办? 很简单, 通过cdn完成
举个例子, 我要下载nuco-backend-cli下面的install.darwin.sh, 可以通过访问下面的cdn获取
https://cdn.jsdelivr.net/gh/NucoTech/nuco-backend-cli@main/install.darwin.shjsdelivr这个cdn其实前端的小伙伴应该是非常熟悉的, 前端的npm包里面的静态资源都可以通过这个cdn来直接引用
官网也贴心的, 给了下面的使用格式
https://cdn.jsdelivr.net/gh/<用户名>/<仓库名>@<分支>/<文件名>获取GitHub Release资源
这个cdn就比较多了, 列举几个, 所有的都是以nbc.exe资源获取为例的
https://gh.con.sh/https://github.com/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe
https://gh.api.99988866.xyz/https://github.com/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe
https://download.fastgit.org/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe
https://github.xiu2.xyz/https://github.com/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe
https://ghproxy.com/https://github.com/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe
https://pd.zwc365.com/seturl/https://github.com/NucoTech/nuco-backend-cli/releases/download/v1.3.0/nbc.exe你也可以使用插件GitHub增强 - 高速下载 这个油猴脚本来实现
其中的部分cdn可以传入下面的格式, 实现获取latest release里面的资源
https://github.com/<用户名>/latest/releases/download/<资源名>