OX杂货铺
保持你的好奇心

Gravatar头像被墙的四种解决方案对比总结 [wordpress开发]

一、调用ssl 头像链接

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

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

  1. //调用ssl 头像链接
  2. function get_ssl_avatar($avatar) {
  3.    $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);
  4.    return $avatar;
  5. }
  6. add_filter(‘get_avatar’, ‘get_ssl_avatar’);

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

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

二、本地缓存

请将下面的代码加到functions.php

  1. function my_avatar($avatar) {
  2.   $tmp = strpos($avatar, ‘http’);
  3.   $g = substr($avatar$tmpstrpos($avatar“‘”$tmp) – $tmp);
  4.   $tmp = strpos($g, ‘avatar/’) + 7;
  5.   $f = substr($g$tmpstrpos($g“?”$tmp) – $tmp);
  6.   $w = get_bloginfo(‘wpurl’);
  7.   $e = ABSPATH .’avatar/’. $f .’.jpg’;
  8.   $t = 1209600; //設定14天, 單位:秒
  9.   if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新
  10.     copy(htmlspecialchars_decode($g), $e);
  11.   } else  $avatar = strtr($avatararray($g => $w.’/avatar/’.$f.’.jpg’));
  12.   if (filesize($e) < 500) copy($w.’/avatar/default.jpg’, $e);
  13.   return $avatar;
  14. }
  15. add_filter(‘get_avatar’, ‘my_avatar’);

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

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

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

三、多说缓存服务器

下面的代码加到functions.php

  1. function duoshuo_avatar($avatar) {
  2.     $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“gravatar.duoshuo.com”,$avatar);
  3.     return $avatar;
  4. }
  5. add_filter( ‘get_avatar’, ‘duoshuo_avatar’, 10, 3 );

优点:多说还是挺不错的,微饭一直在用多说。

缺点:有伙伴反应有时会少根筋。

四、七牛缓存方案

首先你要有个七牛账号,然后把镜像源改成www.gravatar.com即可。

sp161018_100647

  1. //头像使用qiniu缓存
  2. function dw_get_avatar($avatar) {
  3. $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“grava1.qiniudn.com”,$avatar);
  4. return $avatar;
  5. }
  6. add_filter( ‘get_avatar’, ‘dw_get_avatar’, 10, 3 );

总结一下

以上大部分内容转载自微饭。实际测试中发现,无论是速度还是稳定性七牛云都是第一,虽说现在七牛免费账户有各种流量限制,但是缓存的图片都很小,并不会有太大影响。ssl头像链接和多说连接速度差不多,但都不如七牛。存储本地的方案没有测试。

分享到:更多 ()

评论 抢沙发

评论前必须登录!