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

版权声明:
作者:WaterBear
链接:https://l-t.top/1449.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>