玩 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 );
請依據以上代碼的提示替換掉七牛鏡像站點的域名。