Gravatar 高速加速 CDN,国内正常加载头像

因为特殊情况可能Gravatar会无法访问,这个时候我们就只能换掉Gravatar服务器。
Gravatar备选方案还是很多的,有官方提供备用线路节点及地区节点,还有一些第三方提供的Gravatar加速CDN,以及我们可以自己利用七牛做CDN加速。

Gravatar官方镜像

域名头像可用性预览
cn.gravatar.com/avatar/
www.gravatar.com/avatar/
secure.gravatar.com/avatar/
en.gravatar.com/avatar/
0.gravatar.com/avatar/
1.gravatar.com/avatar/
2.gravatar.com/avatar/

Cravatar Gravatar镜像

域名头像可用性预览
cravatar.cn/avatar/

国内基于蒲公英、快云、阿里云的CDN,国外基于bgp.net、spartanhost

webp.se Gravatar镜像

域名头像可用性预览
gravatar.webp.se/avatar/

基于 Cloudflare

会把图片转为webp,压缩后图片文件大小会缩小。不过基于Cloudflare稳定性智者见智

SM.MS loli,net Gravatar镜像

域名头像可用性预览
gravatar.loli.net/avatar/

亚洲主基于 owl.net 其他基于 misaka.io

目前 sm.ms 稳定性堪忧

V2EX Gravatar镜像

域名头像可用性预览
cdn.v2ex.com/gravatar/

自己做 Gravatar 镜像

可以使用一些免费的CDN服务,新建项目,设置绑定网站为cn.gravatar.com,然后拿CDN的域名作为镜像。

已失效Gravatar镜像

  • 多说Gravatar镜像:gravatar.duoshuo.com/avatar/
  • CSS.net Gravatar镜像:cdn.css.net/avatar/

blog安装Gravatar插件

wordpress上的Gravatar插件

FV Gravatar Cache

blog模板funtions.php设置

通过对blog模板functions.php文件设置可以做到不修改源程序、不使用插件达到替换的目的,可以根据需求替换其中的cdn.v2ex.com/gravatar/内容。

wordpress模板funtions.php设置

镜像方案

1
2
3
4
5
6
// 替换Gravatar为v2ex头像源
function yjl_get_avatar( $avatar ) {
$avatar = preg_replace("/http:\/\/(www|\d).gravatar.com\/avatar\//","https://cdn.v2ex.com/gravatar/",$avatar);
return $avatar;
}
add_filter('get_avatar', 'yjl_get_avatar');

缓存方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function my_avatar($avatar) {
$tmp = strpos($avatar, 'http');
$g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
$tmp = strpos($g, 'avatar/') + 7;
$f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
$w = get_bloginfo('wpurl');
$e = ABSPATH .'avatar/'. $f .'.jpg';
$t = 1209600; //設定14天, 單位:秒
if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
return $avatar;
}
add_filter('get_avatar', 'my_avatar');

typecho模板funtions.php设置

修改typecho中Common.php程序文件让gravatar可以正常显示

打开文件var\Typecho\Common.php,找到以下代码(大概在939行)

1
$url = $isSecure ? 'https://secure.gravatar.com' : 'https://1.gravatar.com';

修改为

1
$url = $isSecure ? 'https://cn.gravatar.com' : 'https://cdn.v2ex.com';

应该还可以多加几个域名,哈哈!这里就没有去测试了,当然这2个域名可以自行选择以上任意镜像的域名

Relay Tips: 一极乐https://yijile.com/log/503/