阿萌的程序小屋

萌物控重度患者与您一起畅游技术与梦想的世界

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

 

如有朋友感觉我的博文或代码有问题,愿能给予我宝贵的意见!Thanks

另注:转载请随意,但请带上本文地址,万分感谢。

http://www.wangmengyu.cn/?p=782

这就是真的真的是传说中的公告牌的说~~
暂且努力发展中~~

性别:男  年龄:20岁
现居:江苏  南京  浦口区
标语:萌即是一切