WordPress开发:Gravatar头像被墙的四种解决方案

症状:网站一直处于加载状态,访问速度变慢,左下角显示状态条:0.gravatar.com链接一直滚动等

以下为微饭从网上收集的四种应对Gravatar头像被墙的方案及其优缺点,供大家选用。
一、调用ssl 头像链接

https方式没被墙,速度也还不错,目前可以选择这个简单方式。

如果你的网站启用了ssl则不需要了,没有的话,需要在functions.php加入如下代码

//调用ssl 头像链接
function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

优点:他们认为这个功能简单稳定~

缺点: 当头像特别大时速度可能略慢,微饭认为普通方式被BAN(游戏术语:禁用)了,SSL方式还会远吗~~

二、本地缓存

请将下面的代码加到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');

在WordPress安装根目(即跟wp-content等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,并给予写权限。放入一张同尺寸的头像图片命名为default.jpg。

优点:和主机速度挂钩,如果你的服务器特别快则头像加载也特别快。

缺点:首先你的主机要能出国,然后才是只能缓存一个尺寸的头像,打死就一个尺寸。


本文固定链接: http://blog.wwllcchf.com/?p=541 | 吴文龙的个人博客

作者:wuwenlong 于2016年06月17日发表 &
WordPress开发:Gravatar头像被墙的四种解决方案 | 吴文龙的个人博客

报歉!评论已关闭.