首页/ 填坑/ 文章详情

PHP 缓存 Gravatar 头像图片,防止 SEO 权限外流

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

获取 Gravatar 函数

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';
    }
} 

远程抓取 Gravatar 图片函数

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 权限外流的问题,真一举三得。

文章评论0 records

最新 最早

0

最新评论Latest comments

凡心的仙人凡心的仙人 03-18 14:35
谢谢你了!
rantrismrantrism 2023-04-03 11:27
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申
唐牛才是食神唐牛才是食神 2022-06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 2022-06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 2022-02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!