溫馨提示:本文共1700個字,讀完預(yù)計5分鐘。
前言
最近一直在忙著空閑時間做主題,期間遇到加載Gravatar頭像很慢的情況,我平時開著VPN是沒有發(fā)覺的,關(guān)了VPN后,打開網(wǎng)站時左下角出現(xiàn) 0.gravatar.com、1.gravatar.com或2.gravatar.com等域名的時候,網(wǎng)站一直處于加載中,幾秒才能打開。
這樣就會導(dǎo)致一個問題,很多人都會缺乏耐心地等待一個網(wǎng)頁的打開,從而導(dǎo)致網(wǎng)站讀者的流失,甚至以后不會再訪問你的網(wǎng)站。
正文
那么如何解決了,我目前知道的方法有2種:
1、將Wordpress的Gravatar頭像圖片緩存到本地;
2、將Gravatar頭像的源更換成國內(nèi)的,從而加快訪問速度。有很多優(yōu)化工具的插件都實(shí)現(xiàn)了該功能,就不多說了。
下面分別說一下兩種實(shí)現(xiàn)的方法
第一種:
要想將Wordpress的Gravatar頭像圖片緩存到本地,先在網(wǎng)站的主題目錄新建一個avatar
的文件夾,讀寫權(quán)限設(shè)置為755
。
有些留言者的郵箱可能沒有注冊Gravatar頭像,我們需要用到一個默認(rèn)的圖片替代這樣的留言者的頭像,將一張default.jpg
的圖片作為默認(rèn)頭像放在avatar文件夾中。
打開你的主題的 functions.php
文件。
將以下代碼復(fù)制粘貼進(jìn)去。
1234567891011121314151617181920 | //~ 默認(rèn)的是14天更新一次頭像圖片,你可以自己修改時間(單位:秒)function hbao_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('template_url'); $e = $w .'/avatar/'. $f .'.jpg'; $t = 1209600; // 設(shè)定14天, 單位:秒 if ( !is_file($e) || (time() - filemtime($e)) > $t ) { // 當(dāng)頭像不存在或文件超過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', 'hbao_my_avatar'); |
加了上面代碼后,WordPress的Gravatar頭像圖片緩存到本地后,圖片的路徑不再是Gravatar官網(wǎng)的URL了,而是本地服務(wù)器的圖片地址了。
第二種:
原理:官方的Gravatar 頭像所在的路徑一般都是: www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com 這四個,我們只需要將頭像默認(rèn)的URL換成國內(nèi)的源的就行了,比如:多說,七牛,CN等等。
下面,我提供了cn.gravatar.com的修改方法,其他的也都一樣:
123456 | //~ Gravatar頭像源替換function hbao_replace_get_avatar($avatar){ $avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com"), "cn.gravatar.com", $avatar); return $avatar;}add_filter("get_avatar", "hbao_replace_get_avatar", 10, 3); |
好了,以上即實(shí)現(xiàn)了gravatar頭像的速度優(yōu)化。