当前位置: 首页 > 其它 > 开启Gravatar头像缓存,解决WordPress加载缓慢

开启Gravatar头像缓存,解决WordPress加载缓慢

发布于:2014-11-15 最后更新:2014-11-24 其它 20条评论 22,396 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

几个月前谷歌被GFW屏蔽,而WordPress从谷歌加载字体,导致异常缓慢,如果还没有解决的请看这里。而最近发现自己的博客速度又开始变得缓慢起来,使用F12检查原因,发现世界头像Gravatar又被屏蔽了,so开启Gravatar头像缓存,提高WordPress速度已经迫不及待。

Gravatar
Gravatar头像无法加载

方法一:多说缓存(不推荐)

将下面的代码添加到主题目录中的functions.php文件中,代码的作用是将Gravatar头像资源全部替换成国内多说的Gravatar头像镜像服务器上,这个方法是比较简单的一种。

function v7v3_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),
"gravatar.duoshuo.com",$avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'v7v3_get_avatar', 10, 3 );

方法二:V7V3缓存

只是将缓存服务器替换为了V7V3的,也不知道使用的人多了V7V3能否扛得住,还是将代码添加到主题目录的functions.php文件中,然后保存。

function v7v3_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),
"cd.v7v3.com",$avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'v7v3_get_avatar', 10, 3 );

方法三:本地缓存

这个方法相对前两者稍微复杂一些,不过这个使用本地缓存可能更加的稳定,也不用担心被服务商屏蔽而导致不能加载。

1.在网站根目录新建一个名为avatar的文件夹。(权限改为755或777),部分VPS用户需要将用户组修改为www

2.新建默认的头像图片,名为default.jpg并放入avatar文件夹中。

3.将以下代码加入到当前使用的主题的functions.php文件中。

function v7v3_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 ) { //头像超过设定时间或不存在则更新
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', 'v7v3_avatar');

目前小z博客使用了多说社会化评论插件,不用担心前台加载Gravatar头像的问题(使用多说插件后头像会自动缓存到多说服务器),可是后台并不起作用,因此我使用了方法三来解决这个问题。最后感谢V7V3提供的方法,更多方法请查看:Gravatar头像多种加速方案,提升WordPress速度,若有问题可直接加我QQ:337003006


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


已有20条评论


  1. 其实WordPress博客用户可以将下面代码添加到当前主题的functions.php文件中就可解决Gravatar头像不显示问题。

    //=== Gravatar头像缓存 ===//
    function gravatar_cache($avatar){
    $avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","http://gravatar.hechaocheng.cn",$avatar );
    $avatar = preg_replace( "/\?s\=/",".png?s=",$avatar );
    return $avatar;}
    add_filter( 'get_avatar', 'gravatar_cache' );
    
  2. 其实本地缓存只适合 海外主机, 因为国内主机 已经无法访问官方头像了. 目前我在用多说的头像库. . . 我总觉的用人家的不是太好. .

  3. 我架的节点还使用智能解析,同时使用了七牛和百度云加速进行加速,节点很多。不用担心会宕机,多说的由于服务器在国内的原因所以大部分未缓存的头像会出现502超时状况