最近写的项目用到了 Gravatar 服务,但是 Gravatar 几个服务器都在外国,考虑到项目的用户有相当规模是没有梯子的国内用户,我开始寻找 Gravatar CDN。
网上 Gravatar CDN 参差不齐,有大站建的 CDN,也有网友自建的 CDN,于是简单写了一个 Python 脚本用于测速。
测试内容是两项:图片命中,和图片不命中后跳转到 GitHub 上的图片。各测试十次,取时间平均值,如果出现一次超时等 error 即报错。
脚本和测试结果均写于 2021.4.29,部分信息可能已失效。
from timeit import timeit
import requests
import os
def tester(base_url: str, number: int = 10):
# 成功获取
url1 = base_url + 'fd8b773755459a02294bffc322796b5d?size=300&default=https%3A%2F%2Fraw.githubusercontent.com%2Fuestc-msc%2Fuestcmsc_webapp_backend%2Flyh543%2Fstatic%2Fruanweiwei.jpg'
# 获取失败,跳转到 default
url2 = base_url + "2333333?size=300&default=https%3A%2F%2Fraw.githubusercontent.com%2Fuestc-msc%2Fuestcmsc_webapp_backend%2Flyh543%2Fstatic%2Fruanweiwei.jpg"
try:
print('%.6f' % timeit(lambda: requests.get(url1), number=number), end=' ')
except:
print('error ', end=' ')
try:
print('%.6f' % timeit(lambda: requests.get(url2), number=number))
except:
print('error ')
if __name__ == '__main__':
mirrors = [
"https://gr.mirror.hardrain980.com/",
"http://gravatar.azureedge.com/avatar/",
"https://gravatar.w3tt.com/avatar/",
"https://dn-qiniu-avatar.qbox.me/avatar/",
"https://gravatar.zeruns.tech/avatar/",
"https://cdn.v2ex.com/gravatar/",
"https://gravatar.loli.net/avatar/",
"https://sdn.geekzu.org/avatar/",
"https://www.gravatar.com/avatar/",
"https://cn.gravatar.com/avatar/",
"https://en.gravatar.com/avatar/",
"https://secure.gravatar.com/avatar/",
]
for mirror in mirrors:
print(f'%-40s' % mirror, end=' ')
tester(mirror)
我的测试结果:
网站 | 命中 | 未命中,重定向 | 评价 |
---|---|---|---|
https://sdn.geekzu.org/avatar/ | 6.261718 | 6.096203 | 极客族自建,推荐 |
https://gravatar.w3tt.com/avatar/ | 6.598301 | 7.006393 | w3tt 自建,推荐 |
https://dn-qiniu-avatar.qbox.me/avatar/ | 1.828716 | 不支持 | 七牛自建,延迟最低,推荐,但不支持参数 |
https://cdn.v2ex.com/gravatar/ | error | error | v2ex 自建,可惜人家也在国外 |
https://gravatar.loli.net/avatar/ | 10.047769 | 9.787379 | 免费个人图床,延迟较高 |
https://gravatar.zeruns.tech/avatar/ | 9.166306 | 7.800450 | 网友自建 |
https://gr.mirror.hardrain980.com/ | 7.885361 | 8.984500 | 网友自建 |
http://gravatar.azureedge.com/avatar/ | 5.792183 | 5.848405 | 本人自建(说不定什么时候就跑路了) |
https://www.gravatar.com/avatar/ | error | error | 官方,没法用 |
https://cn.gravatar.com/avatar/ | error | error | 即使 cn 也是在德国的官方 |
https://en.gravatar.com/avatar/ | error | error | 官方,没法用 |
https://secure.gravatar.com/avatar/ | error | error | 官方,没法用 |