自动跳转到离用户最近的镜像?

发现 GNU 镜像有个跳转服务:

https://www.gnu.org/prep/ftp.en.html

You can use the generic url http://ftpmirror.gnu.org to automatically choose a nearby and up-to-date mirror.

比如我这跳转到中科大:

~ $ curl -I http://ftpmirror.gnu.org/
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.4.6 (Trisquel GNU/Linux)
Date: Wed, 25 Nov 2020 05:34:43 GMT
Connection: keep-alive
Location: http://mirrors.ustc.edu.cn/gnu

~ $ curl -I http://ftpmirror.gnu.org/emacs/emacs-27.1.tar.xz
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.4.6 (Trisquel GNU/Linux)
Date: Wed, 25 Nov 2020 05:41:33 GMT
Connection: keep-alive
Location: http://mirrors.ustc.edu.cn/gnu/emacs/emacs-27.1.tar.xz

给 ELPA 镜像也搞一个?CDN 用不起,就假装一个?

在服务器选的最快的镜像,在客户端不一定最快吧?

计算应该是用户和镜像之间的距离,从用户的 IP 地址得到用户的物理位置,然后选最近的镜像

我out了 :slight_smile:

感觉不太靠谱,我这里返回的是阿里云镜像地址,但实际上速度并不快:

⋊> time curl -s -o /dev/null http://mirrors.ustc.edu.cn/gnu
Executed in  637.65 millis     fish           external
   usr time    6.12 millis   195.00 micros    5.92 millis
   sys time    5.11 millis  1175.00 micros    3.94 millis
⋊> time curl -s -o /dev/null http://mirrors.aliyun.com/gnu
Executed in  727.04 millis    fish           external
   usr time   20.14 millis   13.00 millis    7.14 millis
   sys time    8.61 millis    3.56 millis    5.04 millis

另,阿里没有 elpa 镜像:

⋊> curl -s -o /dev/null -w '%{http_code}' http://mirrors.ustc.edu.cn/elpa
301
⋊> curl -s -o /dev/null -w '%{http_code}' http://mirrors.aliyun.com/elpa
404

http://ftpmirror.gnu.org/ 这个应该只是考虑用户和镜像之间的物理位置,哪个近就选那个。只是物理距离短,也不表示网速就更快。另,中科大在合肥,但是阿里云这个镜像用了CDN,有非常多物理位置,不清楚 GNU 这个服务是如何处理的。

物理距离完全不靠谱吧,还不如ping值有用。直接测试下速度是最靠谱的。在elpa 镜像选用上我就是直接测试速度选出最快的站点设置的。

gnu 那个跳转就相当于 cdn 吧,和 CDN 给的 cname 一个意思。

自己测下载速度当然最靠谱了,但是要你自己测,不是自动选择。

这个就是简单的跳转到本地区或者附近的站点吧,大概率速度还凑合。大概是这个思路,还是穷,没办法。