首页 > 滚蛋 > 【12.14】Emlog折腾笔记
2015
12-14

【12.14】Emlog折腾笔记

这两天发现蛋蛋之家的一个大问题,就是评论的头像显示得很捉急。总所周知,博客的评论头像通常都是调用gravatar头像,可是gravatar被墙住了,有时候调用gravatar头像时出现抽风情况,就会严重影响到页面的打开速度。那么问题来了,该如何解决这 方面的问题呢——建立头像缓存。

由于这个方法不依赖于模板,所以缓存目录最好建立在根目录或者博客的安装目录之下。比如我就直接放在t\avatar文件夹里,建立好文件夹后设置其权限为777,可写。

然后就是修改 getGravatar 函数。打开 include\lib\function.base.php 文件,找到getGravatar函数的地方,贴上以下代码:

  1. //获取Gravatar头像    
  2. function getGravatar($email$s=64, $d='mm', $r='g') {    
  3.     $f = md5($email);    
  4.     $a = BLOG_URL.'t/avatar/'.$f.'.jpg';    
  5.     $e = EMLOG_ROOT.'/t/avatar/'.$f.'.jpg';    
  6.     $t = 1296000; //15天,单位:秒    
  7.     if (emptyempty($d)) $d = BLOG_URL.'t/avatar/default.jpg';    
  8.     if (!is_file($e) || (time() - filemtime($e)) > $t ) {    
  9.         //当头像不存在或者超过15天才更新    
  10.         $g = sprintf("http://%d.gravatar.com",(hexdec($f{0})%2)).'/avatar/'.$f.'?s=64&d='.$d.'&r='.$r;    
  11.         copy($g,$e); $a=$g//新头像copy时, 取gravatar显示    
  12.     }    
  13.     if (filesize($e) < 500) copy($d,$e);    
  14.     return $a;    
  15. }    

这样暂时就ok了,需要注意的是,函数中的尺寸是控制复制过来的图片的大小,而不是该图片的显示尺寸;另外,如果当前页面的评论头像没有缓存完,页面可能显示不完全,网络不好甚至可能出现错误代码,不要着急,刷新一下,直到全部头像缓存完毕就正常了。

对于没有设置头像的邮箱,默认显示的头像如下:

  1. $d='mm'  -  神秘人  (灰色头像)    
  2. $d='monsterid'  -  小怪物  (自动生成)    
  3. $d='identicon' -  抽象图形 (自动生成)    
  4. $d='wavatar'  -  W-avatar (自动生成)    
  5. $d='非空格符'   -  Gravatar  (大写 “G”)  

注意:$d 数据中的四个关键字只能是小写,不然会被视为其它的非空格符;另外,$d 的数据中也不能出现空格符,否则该函数将不能正常调用。

文章至此,头像问题全部搞定!


最后编辑:
作者:吴蛋蛋
这个人很懒什么也没留!~

发布评论

表情