lisa主机lisa主机

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

发布于:2014-11-15 更新于:2014-11-24 其它 20条评论

几个月前谷歌被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' );
    
    1. 小z 何朝城

      这应该也是你自己在用的缓存吧,感谢分享。

      1. 何朝城 小z

        是的,我自己也在用(配合七牛搭建)

  2. 小武

    其实本地缓存只适合 海外主机, 因为国内主机 已经无法访问官方头像了. 目前我在用多说的头像库. . . 我总觉的用人家的不是太好. .

    1. 小z 小武

      嗯嗯,自己搭建缓存服务器也是不错的。

      1. 小z 同盟源

        昨晚多说抽风比较厉害,所有使用多说服务的留言板都无法加载,现在已经恢复。

  3. 博客集聚地

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

    1. 小z 博客集聚地

      目前有一大批用户已经使用了奶嘴哥提供的缓存服务

  4. WordPress主题

    替换为多说的确实不行 还是被墙 替换为V7V3的就可以

    1. northstar WordPress主题

      v7v3比多说稳定不?我替换了多说,有几个头像显示不出

      1. 小z northstar

        顺便分享一下我的缓存服务器也可以用哦,0.bsdev.cn

  5. northstar

    我已经用了多说了,Gravatar头像加载起来确实慢。另外做个友链,小Z意下如何?星空精品屋的。

  6. Rich

    头像缓存对于性能不好的服务只会更慢吧,感觉替换成多说服务器会比较好

    1. 小z Rich

      我前台多说,后台本地,多说的服务器偶尔也会抽风,也可以自己使用七牛来缓存。

  7. 小龍

    还有我发现我的博客木有影响。速度还是可以的。

  8. 小龍

    呵呵,GFW就是叼,我无力吐槽。