很多wordpress的主题都是有gravatar头像的,但是由于网络的原因,国内加载gravatar头像是相当缓慢的过程,所以就要用其他办法来解决这样一个加载缓慢的问题。
现在解决这个问题一般有2种方法,主要是本地缓存和CDN缓存。
先来谈谈本地缓存的方法,在网站的根目录建立一个avatar文件夹,里面放上一张图片default.jpg作为默认,然后打开functions.php文件,加入以下代码
//头像加速 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');
这一方法可以将图片缓存到本地空间上。
CDN缓存是一大类,主要有使用已经存在的和自己建立个缓存。
使用多说的gravatar头像服务器,感觉这个比较简单,在functions.php文件添加几行代码就ok的。
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 );
还有另外的自己建立CDN缓存的在这里就不说了,网上说的比较详细,而这也只是当作笔记,可以比较方便的更改。
转载请注明:春风博客 » 解决wordpress访问缓慢的办法-Gravatar头像