Gravatar头像被墙的四种解决方案
- 发表于
- WordPress
去年就把主题换了,头像问题忘记处理,今天补上:
症状:网站一直处于加载状态,访问速度变慢,左下角显示状态条:0.gravatar.com链接一直滚动等
 以下为网上收集的四种应对Gravatar头像被墙的方案及其优缺点,供大家选用。
一、调用ssl 头像链接
https方式没被墙,速度也还不错,目前可以选择这个简单方式。
如果你的网站启用了ssl则不需要了,没有的话,需要在functions.php加入如下代码
| 1 2 3 4 5 6 7 8 | //调用ssl 头像链接 function get_ssl_avatar($avatar) {    $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2&d=mm" class="avatar avatar-$2" height="$2" width="$2">',$avatar);    return $avatar; } add_filter('get_avatar', 'get_ssl_avatar'); | 
优点:他们认为这个功能简单稳定~
缺点: 当头像特别大时速度可能略慢,微饭认为普通方式被BAN(游戏术语:禁用)了,SSL方式还会远吗~~
二、本地缓存
请将下面的代码加到functions.php中
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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。
优点:和主机速度挂钩,如果你的服务器特别快则头像加载也特别快。
缺点:首先你的主机要能出国,然后才是只能缓存一个尺寸的头像,打死就一个尺寸。
via:willin
三、多说缓存服务器
| 1 2 3 4 5 6 7 8 | 下面的代码加到functions.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 ); | 
优点:多说还是挺不错的,微饭一直在用多说。
缺点:有伙伴反应有时会少根筋。
四、七牛缓存方案
首先你要有个七牛账号,没有就先注册一个七牛账号:https://www.qiniu.com
将以下代码放入你的wordpress主题的functions.php中:
| 1 2 3 4 5 6 7 8 | //头像使用qiniu缓存 function dw_get_avatar($avatar) { $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"grava1.qiniudn.com",$avatar); return $avatar; } add_filter( 'get_avatar', 'dw_get_avatar', 10, 3 ); | 
请将里面的:grava1.qiniudn.com 替换为你的七牛地址。
适用于使用七牛插件的小伙伴。
PS:以上,我使用的是SSL,简单方便!
   原文连接:Gravatar头像被墙的四种解决方案  所有媒体,可在保留署名、
  原文连接
的情况下转载,若非则不得使用我方内容。  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 