为什么要缓存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 | 水缘泡泡博客