标签归档:Gravatar

Gravatar头像缓存

由于我没开启如WP Super Cache之类的缓存软件,这样子在评论多的时候,加载头像就成了一个大问题,毕竟所有的WordPress博客都是有限的几个服务器从那里获取头像的。

所以,决定缓存Gravatar头像。参照的是Willin大师新版Gravatar缓存一文中的第二种方法。

首先在WordPress根目录下建立文件夹avatar,设置权限为755(一般网站管理后台都默认权限为这个),用来缓存头像。准备一张适合模版大小的默认头像“default.jpg”,并放到该文件夹中。

将以下代码copy到主题的functions.php文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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’);

一般来说这样就可以了。如果有别的问题可以到Willin的文中去找解答。