Gravatar頭像已經成為了博客、論壇等一種非常流行的通用頭像,不管是WordPress還是Z-Blog、Typecho、Emlog等,留言或者登錄注冊等都支持Gravatar頭像,擁有一個Gravatar頭像已經成為草根博主一種必選項目。
每位留言者根據自己的郵箱會顯示不同的Gravatar頭像,如果一篇文章的留言者非常多,比如幾百個以上,就會顯示幾百個Gravatar頭像圖片,圖片越多,HTTP請求也就越多,容易導致網頁加載緩慢、網站出現打不開的現象。
另外一個不容忽視的問題是Gravatar頭像的服務器全部位于國外,由于受到各種因素的影響,有時國內是無法連接到Gravatar頭像服務器上,也就是無法顯示Gravatar頭像,大量的無法顯示的圖片會導致網頁直接打不開。
基于以上兩個原因,部落已經看到了不少的有名氣的博客已經取消了顯示Gravatar頭像,目的就是為了最大限度地加快網頁的加載速度,畢竟在瀏覽網頁內容和留言兩者之間,獲取網頁內容才是第一位的,評論只是一種交互方式。
在當前Gravatar頭像服務器位于國外的情況下,要想要加快WordPress顯示Gravatar頭像的速度,首先可以做的就是將Gravatar頭像圖片緩存到自己的虛擬主機或者VPS上,這樣用戶訪問的就是直接讀取自己服務器的圖片文件了。
這樣做的好處是可以避免Gravatar頭像服務器被Q的情況下導致網頁無法打開,但是部落用這個方法后發現,過了一段時間后,大量的Gravatar頭像圖片會占用非常多的空間,且不容易刪除。另外過多的圖片反而會增加服務器壓力。
所以提升WordPress的Gravatar頭像加載速度進階的方法就是將Gravatar頭像的服務器變身為國內的,最好是外鏈形式,例如放在國內一些大公司的服務器上或者專業的CDN服務器上,本篇文章就來介紹此種方法。
WordPress是一個定制性非常強的博客程序,各種WordPress加速方法也是層出不窮,加速效果不錯的方式有:
提升WordPress的Gravatar頭像加載速度方法:緩存本地化國內服務器
一、WordPress的Gravatar頭像圖片緩存到本地
1、此方法來自Willin Kan博主,這位在WordPress很有名氣的博主因為討厭WordPress程序越來越低效率而毅然決定關站放棄WP的行為,實在讓部落覺得敬佩。
2、要想將WordPress的Gravatar頭像圖片緩存到本地,先在網站的根據目錄新建一個avatar 的文件夾,讀寫權限設置為755。
3、有些留言者的郵箱可能沒有注冊Gravatar頭像,我們需要用到一個默認的圖片替代這樣的留言者的頭像,將一張default.jpg 的圖片作為默認頭像放在avatar文件夾中。
4、打開你的主題的 functions.php 文件,編輯內容。
5、將以下代碼復制粘貼到你的functions.php最后,默認的是14天更新一次頭像圖片,你可以自己修改為更短時間。
function my_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 ) { //當頭像不存在或文件超過14天才更新
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', 'my_avatar');
6、WordPress的Gravatar頭像圖片緩存到本地后,圖片的路徑不再是Gravatar官網的URL了,而是本地服務器的圖片地址了。
二、將WordPress的Gravatar頭像緩存到百度BAE空間
1、利用上述方法,WordPress的Gravatar頭像會自動生成圖片保存到本地的avatar 的文件夾。
2、看過百度BAE全平臺Layer鏡像CDN加速安裝使用一定可以立即想到將Gravatar頭像緩存到百度BAE空間上。
3、利用百度BAE空間的速度可以大量加快圖片的加載速度,同時也可以避免過多的圖片請求拖慢服務器。
4、因為所有的Gravatar頭像圖片都保存在avatar 的文件夾中,安裝了Wp Super Cache插件的朋友可以直接到后臺的CDN選項中將avatar文件目錄包含中緩存加速中。
5、還有安裝或者使用Wp Super Cache插件的朋友,請參考:WordPress加速緩存插件WP Super cache安裝方法及使用技巧
6、使用百度BAE空間加速后,Gravatar頭像圖片顯示出來的URL就是百度空間上了。
三、將WordPress的Gravatar頭像緩存到七牛云存儲CDN
1、七牛云存儲CDN和上面的百度BAE全平臺Layer鏡像工作原理是一樣的,沒用過七牛的參考:七牛云存儲國內免費CDN加速10GB空間
2、先到七牛中添加你的源網站。
3、然后在Wp Super Cache中將緩存URL設置為七牛的就可以了。
四、利用多說Gravatar頭像國內鏡像服務器實現緩存加速
1、上面兩種方法操作有點繁瑣,圖片太多的話緩存到BAE空間或者七牛CDN也要消耗不少的流量,這里再分享一個在 yuxiaoxi.com 博主上的方法:將WordPress頭像緩存到多說Gravatar頭像國內鏡像服務器。
2、方法的原理是:官方的Gravatar 頭像所在的路徑一般都是www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com 這四個,我們只需要將頭像默認的URL換成多說的就行了。
3、打開主題下的functions.php 文件,將以下代碼復制粘貼保存即可。
function mytheme_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', 'mytheme_get_avatar', 10, 3 );
4、效果見下圖,Gravatar 頭像的外鏈地址已經全部到了多說的國內服務器了。
5、同理利用此方法,我們還可以在七牛中自己建立一個Gravatar官網頭像服務器,然后將以下代碼復制到functions.php 文件中,就可以讓Gravatar 頭像的外鏈地址變成七牛的CDN了。
function mytheme_get_avatar($avatar) {
$avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"freehao123.qiniudn.com",$avatar);
return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
五、Gravatar頭像緩存加速方法總結
1、部落在使用Gravatar緩存到本地時發現當用戶在Gravatar中更新了自己的頭像時或者用郵箱注冊了Gravatar頭像時,留言后顯示的原頭像會遲遲得不到更新,因為得等14天內主機才會重新獲取新的Gravatar頭像。
2、第二種利用多說Gravatar頭像國內鏡像服務器實現緩存加速貌似有點風險,因為如果用的人多的話,不排除多說會禁止此種方法,畢竟不帶來利益的交易誰也不愿意做。當然即使以后禁止了也沒有什么可怕的,大不了我們再換回來。
文章出自:免費資源部落http://www.freehao123.com/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。
主題貓WP建站,累計幫助1300+客戶成功建站,為站長提供支持!
立刻開啟你的建站之旅