上一篇
年轻人,你什么时候意识到贫富差距
Gravatar 是什么? 全球通用头像。只要拥有一个电子邮箱,即可到 Gravatar 官网免费注册个人头像,全球通用,是不是很酷呢?
Gravatar 用在那里? Gravatar 与博客更配哦! WordPress 是最早被国内站长认识的博客系统,无数的程序员在其背后默默加持:开发大量场景的插件,制作各种美轮美换主题。重点,WordPress 是免费的,所有人都可以轻易拥有属于自己的博客网站。
WordPress 在国内大行其道,其默认的头像便使用 Gravatar 头像图片。意不意外,惊不惊喜欢呢!这意味着,只要注册一个 Gravatar 的头像,你的头像将在通用国内的博客网站上。
Gravatar 头像虽好,考虑到它服务器在国外,会偶尔被屏蔽在墙外。还有一点,大量使用 Gravatar 头像,容易将自己那点可怜 SEO 权重导流出去了,到时候就哭笑不得了。
鉴于以上原因,最保险的做法就是将 Gravatar 缓存到本地,即可稳定输出头像,又可防止权重意外外流。
https://secure.gravatar.com/avatar/428bedbff8654564ca0e5a920ebed991?d=mm&s=80
分析 Gravatar 头像链接,除了电子邮箱加密外,有两个重要的参数:
d:默认头像类型,使用MM
s:头像的大小, 范围 1 ~ 512,使用80
PHPfunction getGravatar($email, $size = 80, $type = 'mm') {
$file_name = md5(strtolower(trim($email)));
//if(!Env::get('WEB_CACHE_GRAVATAR')) { //根据个人需求是否开启缓存
//return sprintf('https://secure.gravatar.com/avatar/%s?d=%s&s=%d', $file_name, $type, $size);
//}
$cache_time = 1209600;
$path = dirname(__FILE__).'/../../cache/avatar/';
$file_path = $path . $file_name . '.png';
if (!file_exists($path)) { //生成文件夹,文件默认需要0755权限
mkdir($path, 0755, true);
}
if (!is_file($file_path) || (time() - filemtime($file_path)) > $cache_time) {
$gravatar = sprintf('
https://secure.gravatar.com/avatar/%s?d=%s&s=%d', $file_name, $type, $size);
curlGravatarImage($gravatar, $file_name, $path);
}
if(is_file($file_path)) { //图片存在
return './cache/avatar/'.$file_name.'.png';
}
}
JSfunction curlGravatarImage($url, $name, $path = '') {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_REFERER, $_SERVER['SERVER_NAME']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$date = curl_exec($curl);
curl_close($curl);
$file = @fopen($path . $name.'.png', 'a');
fwrite($file, $date);
fclose($file);
}
制作缓存 Gravatar 头像核心思路,根据头像文件的创建时间,限制一定时间范围以内,不再向 Gravatar 获取请求数据,直接使用本地数据。即可解决用户头像更新的问题,又解决 Gravatar 链接不稳定的问题,还解决 SEO 权限外流的问题,真一举三得。
最新评论Latest comments