WordPress技术:WordPress for SAE 免插件实现缓存Gravatar头像[转载]

为什么要缓存Gravatar头像?
因为Gravatar的服务器在国外,又因为伟大的Wall,在国内访问使用该功能的网站或博客,可能因为载入速度过慢而导致页面一直在载入中甚至头像无法显示,这是一个非常糟糕的用户体验。将头像缓存下来,定时更新,而头像图片的文件一般不会很大,不需要暂用很大的服务器空间,因此缓存Gravatar头像是一个加快网站访问速度的高性价比选择。
如何在WordPress for SAE中缓存Gravatar头像?
很简单,在所使用的主题的function.php文件中加入以下代码,不破坏原文件结构即可:
[cc lang=”php”]
function get_avatar_cache($avatar){
if($_SERVER[‘PHP_SELF’] == ‘/wp-admin/options-discussion.php’)
return $avatar;
$s = new SaeStorage();
$tmp = strpos($avatar, ‘avatar/’) + 7;
$avatar_id = substr($avatar, $tmp, strpos($avatar, ‘?’) – $tmp);
$tmp = strpos($avatar, ‘avatar/’) + 7;
$pattern = “/(
// ‘;
if(!$s->fileExists(‘wordpress’, $avatar_file)){
$content = @file_get_contents($avatar_url);
if(!$content)
return $avatar;
$attr = array(‘expires’ => ‘now plus 14 day’);
$result = $s->write(‘wordpress’, $avatar_file, $content, -1, $attr);
if ($result != true)
var_dump($s->errno(), $s->errmsg());
}
$avatar = preg_replace($pattern, “$1” . $s->getUrl(‘wordpress’, $avatar_file) . “$3”, $avatar);
return $avatar;
}

add_filter(‘get_avatar’, ‘get_avatar_cache’);
[/cc]
转载自:http://sypopo.com/video/2374.html | 水缘泡泡博客

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注