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

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

其它 20条评论 2014-11-15 12,413 views

几个月前谷歌被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 条评论 “开启Gravatar头像缓存,解决WordPress加载缓慢”

  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. 何朝城说道:

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

  2. 小武说道:

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

    1. 小z说道:

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

    2. 同盟源说道:

      多说服务器3天抽风一次

      1. 小z说道:

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

  3. 博客集聚地说道:

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

    1. 小z说道:

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

  4. 超級efly说道:

    好厲害!!

  5. WordPress主题说道:

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

    1. northstar说道:

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

      1. 小z说道:

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

  6. northstar说道:

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

  7. Rich说道:

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

    1. 小z说道:

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

  8. 小龍说道:

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

  9. 小龍说道:

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

发表评论

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