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

請依據以上程式碼的提示替換掉七牛映象站點的域名。