当前位置: 首页 > 其它 > Gravatar头像多种加速方案,提升WordPress速度

Gravatar头像多种加速方案,提升WordPress速度

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

最近Gravatar头像被墙,导致绝大部分wordpress博客都受到此影响,加载非常的缓慢,小z博客之前分享过一篇《开启Gravatar头像缓存,解决WordPress加载缓慢》的教程,后来发觉并不算很完善,经过几天的分析后用这篇文章做个总结,希望对大家有帮助。

方法一、gravatar-fixed插件

先来最简单的办法,直接使用gravatar-fixed插件就可以对Gravatar头像进行缓存,这个插件由WPCEO出品功能是修正Gravatar服务器无法正常访问的情况,并且可以自定义Gravatar服务器地址。小z已经启用默认的缓存服务器0.bsdev.cn,所以安装此插件后无需额外的设置便能感受到速度的提升,非常适合新手。

dfgravatar
图1-1 gravatar-fixed插件设置
点此下载:gravatar-fixed.zip

方法二、使用小z博客提供的缓存(推荐)

小z博客在忍受Gravatar头像被墙的痛苦后,利用自己的海外服务器反代了Gravatar头像,并且使用了七牛云存储的加速服务,免费提供给各位网友使用,只需将下面的代码添加到主题目录的functions.php中即可体验到加速。

//Gravatar缓存头像
function xiaoz_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),
"0.bsdev.cn",$avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'xiaoz_get_avatar', 10, 3 );
//缓存头像END

方法三:缓存到本地(海外主机用户使用)

在前一篇文章中小z也分享过此方法,但是忽略了个重要的问题是Gravartar被墙,国内主机是无法缓存到本地的,所以此方法仅适用于海外主机的用户,如果你的海外主机速度不够快建议使用方法一或方法二。

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');

方法四:关闭头像功能

这个做法显得有些极端,但却有效,对要求不是特别高而又不想折腾的用户可以在后台->设置->讨论->将头像显示的勾去掉即可,这样速度就杠杠的啦。

showtouxiang
图4-1 关闭头像显示

目前可用的缓存服务器有0.bsdev.cn(由小z博客提供),cd.v7v3.com(由V7V3提供),当然了可能还有更多,使用同一个缓存服务器的用户越多那么二次加载的时候就越快。

特别提醒:使用多说的朋友注意了,多说本身有自己的缓存服务器,但是不知什么原因,多说最近很多头像回源了(向官方反应,但是没有收到任何结果),因此使用多说的朋友也会感觉到加载缓慢,表现为部分头像回源后无法加载,如下截图。另外上面的所有方法对启用多说的用户均不能奏效,必须停用多说才能起到作用,暂时还没想到两者并存的方法(没办法,小z也用回自带评论了),还请见谅。

huiyuan
多说部分头像回源

发表回复

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


已有24条评论


  1. 为什么我本地缓存弄好以后其他人的头像都没问题,
    我自己的头像不管怎么在Gravatar官网改,
    在我自己的网页上都显示的都是那个传到avatar文件里默认的default.jpg头像…
    好纠结。。。

    1. 因为gravartar被墙缓存到自己服务器的话只有海外主机适用,另外你清除下浏览器缓存试试呢。

  2. 使用 HTTPS 的 gravator ,加入以下代码到当前Wordpress主题的functions.php文件中:

    function get_gravatar_back( $avatar ) {
        $avatar = str_replace( array( 'http://www.gravatar.com', 'http://0.gravatar.com', 'http://1.gravatar.com', 'http://2.gravatar.com' ), 'https://secure.gravatar.com', $avatar );
        return $avatar;
    }
    add_filter( 'get_avatar', 'get_gravatar_back' );
    
        1. 嗯呢,我也发现了,而且最近多说部分头像还被回源了,如果使用了多说上面的代码仅对后台生效。

          1. 我现在用gravatar-fixed插件,输入的多说的gravatar地址。
            我向多说的人反映这个情况,他们还爱答不理的。

        2. 我并不建议你输入多说的缓存地址,因为有些根本缓存不了,我也向多说反应了,毫无回应。

    1. 国内主机无法建立缓存,直接被墙了,我的那个缓存服务器不是七牛直接镜像的(貌似七牛直接镜像也有压力),我是利用自己的海外服务器反向代理了Gravatar,然后再用七牛镜像这台服务器,不仅减轻了服务器压力,还拥有了多个CDN加速,所以可以放心使用。

    2. 另外贵站加载了谷歌字体,导致加载缓慢。不知你是使用的国内主题还是国外主题呢?通常情况下这个方法能够解决:http://www.xiaoz.me/archives/3335,如果此方法还行不通就得从源码入手了。

        1. 没有成功,用F12帮你查看了一下。可能是由于主题的原因,看来得从源码中来找了,可以加我QQ:337003006