2016-04-09 13:49
gravatar头像被墙,wordpress网站打开缓慢问题的解决办法
阿萌今天帮朋友搞新站的时候,发现偶尔打开网站特别缓慢,结果利用浏览器检测network一看,发现是gravatar.com加载使得网站加载非常缓慢,此篇文章分享给大家解决办法。
问题就如标题所说,是因为网站被墙,导致在国内访问不到网站,当然资源就更不可能被加载了。
本次阿萌分享三种解决办法,经过当前时间测试,暂时均可放心使用。
一、调用gravatar的ssl链接
http虽然被墙了,索性的是https没有被墙,测试速度也还是不错的,可以放心使用,但不保证哪天ssl链接也被墙导致链接不可用的情况,至少现在可以放心使用。
方法是复制以下代码,到模板文件夹的function.php文件中。
function get_ssl_avatar($avatar) { $avatar = preg_replace('/.*/avatar/(.*)?s=([d]+)&.*/','<img class="avatar avatar-$2" src="https://secure.gravatar.com/avatar/$1?s=$2" alt="" width="$2" height="$2" />',$avatar); return $avatar; } add_filter('get_avatar', 'get_ssl_avatar');
二、本地缓存方式
此种方法即模仿gravatar头像的链接布局,在自己网站的wordpress安装根目录下,新建一个名为avatar的文件夹,并给予相应的权限(755/777),放入一张相同尺寸的头像图片,文件名为default.jpg。
做好上面的步骤,然后复制以下代码,到模板文件夹的function.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');
三、多说缓存(此方法不推荐,因为有小伙伴反应有时会回源)
复制以下代码,到模板文件夹的function.php文件中。
function duoshuo_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', 'duoshuo_avatar', 10, 3 );
标签:wordpress