玩 WordPress 的站长一定对 Gravatar 头像不陌生,其实 Gravatar 头像已经成为了博客、论坛等一种非常流行的通用头像,不管是 WordPress 还是 Z-Blog 、 Typecho 、 Emlog 等,留言或者登录注册等都支持 Gravatar 头像。但是由于 Gravatar 头像的服务器在美国,由于种种原因会造成 Gravatar 头像打不开、打开缓慢等情况,从而导致加载了 Gravatar 头像的网页加载速度变慢,打不开等情况。那么我们为了减小 Gravatar 头像因素对网站速度的影响,就应该尽量把尽量把 Gravatar 头像缓存到本地,或者使用国内 Gravatar 头像的镜像服务器。
首先来说下将 Gravatar 头像缓存到本地的方法:
一、在网站根目录新建一个名为 avatar 的文件夹。 (权限改为 755 或 777) 。
二、新建默认的头像图片,名为 default.jpg 并放入 avatar 文件夹中。
三、将以下代码加入到当前使用的主题的 functions.php 文件中。
function wxd_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', 'wxd_avatar');
使用多说 Gravatar 镜像服务器加载 Gravatar 头像
大家应该对多说这款社会化评论插件不陌生,其实多说的头像就是使用 Gravatar 头像资源的,只不过多说自家有 Gravatar 头像的镜像服务器,服务器位于国内,而且没有防盗链,那么我们就可以利用多说的 Gravatar 镜像服务器来加载网站的 Gravatar 头像了,方法很简单,只要在当前主题的 functions.php 文件加入以下代码即可:
function wxd_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', 'wxd_get_avatar', 10, 3 );
使用七牛镜像功能加速 gravatar 头像
上面小编介绍了使用多说镜像服务器进行 Gravatar 头像加速的方法,虽然目前多说没有采取任何屏蔽措施,但是人家也不是傻子,用的人多了肯定会封的。所以最安全的方法是使用自己搭建的镜像服务器。接下来小编就教大家如何使用七牛镜像加载 Gravatar 头像。
一、首先在七牛后台新建一个空间,设置为公开属性,如下图:
二、然后设置镜像服务器,镜像服务器,如下图:
其中 Gravatar 镜像源可以设置为:
www.gravatar.com
0.gravatar.com
2.gravatar.com
gravatar.duoshuo.com
只要将镜像源设置为以上站点之一即可,小编这里设置的是多说的 gravatar 镜像服务器。
三、然后在主题的 functions.php 文件加入以下代码:
function wxd_get_avatar($avatar) { $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"你创建的七牛镜像站点的域名",$avatar); return $avatar; } add_filter( 'get_avatar', 'wxd_get_avatar', 10, 3 );
请依据以上代码的提示替换掉七牛镜像站点的域名。