首页/ 填坑/ 文章详情

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

HentaiCatHentaiCat 2020-12-30 10:22
考科目二全程很紧张,考了三次才过,有次侧方入库直接pass,100分扣完,呜呜呜~
猫猫酱猫猫酱 2020-11-12 10:56
一入多肉深似海,说多都是泪
soulkunsoulkun 2020-11-05 15:54
IconFont的图标真的很好用!!!
无限链霉球菌无限链霉球菌 2020-11-03 11:41
药店,了解一下(`・ω・´)
HentaiCatHentaiCat 2020-11-02 15:28
(ಡωಡ)很实用,直接拿走...