因为特殊情况可能Gravatar会无法访问,这个时候我们就只能换掉Gravatar服务器。
Gravatar备选方案还是很多的,有官方提供备用线路节点及地区节点,还有一些第三方提供的Gravatar加速CDN,以及我们可以自己利用七牛做CDN加速。
Gravatar官方镜像:
cn.gravatar.com/avatar/
secure.gravatar.com/avatar/
en.gravatar.com/avatar/
0.gravatar.com/avatar/
1.gravatar.com/avatar/
2.gravatar.com/avatar/
3.gravatar.com/avatar/
V2EX Gravatar镜像:
cdn.v2ex.com/gravatar/
七牛 Gravatar镜像:
注册七牛
新建项目,设置绑定网站为cn.gravatar.com,然后拿七牛提供的二级域名直接用
已失效Gravatar镜像:
- 多说Gravatar镜像:
gravatar.duoshuo.com/avatar/
- CSS.net Gravatar镜像:
cdn.css.net/avatar/
blog按照Gravatar插件
wordpress上的Gravatar插件
blog模板funtions.php设置
通过对blog模板functions.php文件设置可以做到不修改源程序、不使用插件达到替换的目的,可以根据需求替换其中的cdn.v2ex.com/gravatar/
内容。
wordpress模板funtions.php设置
镜像方案
// 替换Gravatar为v2ex头像源
function yjl_get_avatar( $avatar ) {
$avatar = preg_replace("/http:\/\/(www|\d).gravatar.com\/avatar\//","http://cdn.v2ex.com/gravatar/",$avatar);
return $avatar;
}
add_filter('get_avatar', 'yjl_get_avatar');
缓存方案
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行)
$url = $isSecure ? 'https://secure.gravatar.com' : 'http://1.gravatar.com';
修改为
$url = $isSecure ? 'https://cn.gravatar.com' : 'http://cdn.v2ex.com';
应该还可以多加几个域名,哈哈!这里就没有去测试了,当然这2个域名可以自行选择以上任意镜像的域名
本文更新中
Relay Tips: 一极乐( https://yijile.com/log/503/ )