WordPress优化使用国内镜像加速Gravatar及缓存
为什么要使用国内镜像?
WordPress就使用了Gravatar头像,但是Gravatar服务器在国外但是我们的用户多来自国内,这就导致网站访问速度很慢。
解决办法
方法一、使用国内镜像加速
使用国内镜像加速,调用代码将下方代码加入到主题的functions.php文件里。
*重要提示:请将你自己要添加到 functions.php 的所有代码,添加到主题根目录的 custom-functions.php,不要添加到functions.php这个文件,不要编辑functions.php这个文件!
/*gravatar使用镜像加速*/ function replace_gravatar($avatar) { $avatar = str_replace(array("//gravatar.com/", "//secure.gravatar.com/", "//www.gravatar.com/", "//0.gravatar.com/", "//1.gravatar.com/", "//2.gravatar.com/", "//cn.gravatar.com/"), "//cdn.v2ex.com/gr", $avatar); return $avatar;} add_filter( 'get_avatar', 'replace_gravatar' );
其中cdn.v2ex.com/gr可替换为下方镜像网站
cdn.v2ex.com/gr dn-qiniu-avatar.qbox.me gravatar.proxy.ustclug.org sdn.geekzu.org gravatar.loli.net
方法二、Gravatar头像缓存到本地
1.首先在网站根目录创建一个avatar文件夹(权限改为777或755)。
2.新建一张默认的头像图片,名为default.jpg并放入avatar文件夹中。
3.将以下代码添加到当前使用的主题的functions.php文件中即可。
//将Gravatar头像缓存到本地 function ymjihe_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', 'ymjihe_avatar');