因为给自己的主题换新主题配色了,对应的主题的头像也要更换一下,不然显得非常不搭

这意味着我必须得爬qiang去访问Gravatar的官网,我自用的节点又死了,导致开个Gravatar官网都很卡

好不容易把Gravatar头像成功换好了,发现国内反代的Gravatar源刷新速度很慢

很早之前换的Gravatar头像,一直到第三天都没变,还是原来的头像,于是本文就来了

介绍一下Gravatar头像

可能还有很多新手站长朋友不知道什么叫做Gravatar头像,这里简单给大家科普一下

Gravatar是WordPress母公司Automattic推出的一个公共头像服务

你只需要去Gravatar.com注册账号绑定自己的域名邮箱,然后上传自己喜欢的头像

在逛博客评论的时候,邮箱填写您的域名邮箱,会默认输出你在Gravatar上传的头像

支持个性化,是一个非常不错的项目,现在各大博客系统基本上都是支持Gravatar头像的

但是因为长城防火墙的存在,Gravatar在中国境内时不时就会被墙一下,比如本次从2021年2月一直到8月都是不可访问状态

有时候去Gravatar上传自己的新头像,不得不借朋友的梯子爬qiang,非常的繁琐

因为被墙,国内很多大佬也想了很多方法,比如使用反代和cdn加速确保Gravatar在国内能正常访问

法律上讲这种方法虽然可行但是违法的,一不小心可能会很容易吃牢饭

其实可以仔细想一下为什么Gravatar头像在国内会被墙,一定是出现了某些涉政、涉黄之类的违法内容,然后被禁止国内访问

这些国家禁止的东西我们再将其反代到中国使其可以正常访问,不得不说真的是细思极恐

但是话说回来,反代和cdn加速真的解决了本质问题吗,其实并没有,这种方法只是解决头像访问的问题

但是没有解决头像上传问题,我们如果换头像的话,就得利用国内的头像源去获取Gravatar头像

而且缓存没十天半个月根本刷新不出来新的头像,可谓真的不方便

在这里小赵同学也在叶开的介绍下认识了一款咱们国内的头像库项目,真是我们的福音

国内Cravatar头像源项目

Cravatar是lifepress团队在国内做的一个公益项目,是一个Gravatar完美的替代品

看了官方的文档,Cravatar100%兼容Gravatar的头像API,这意味着你可以简单的通过替换域名的方式来使用Cravatar接替Gravatar

让我惊艳的功能官方文档是这样说的

Cravatar支持在用户未设置Cravatar头像及Gravatar头像时匹配QQ头像(仅限于使用QQ数字邮箱的用户)

其带来的效果是:

经过三级匹配(Cravatar头像->Gravatar头像->QQ头像)后,大约70%的访客都会得到准确的头像

也就是使用Cravatar,如果你没有Gravatar头像,Cravatar可以默认输出你的QQ头像

对于官方文档,小赵同学认为,总的来说,Cravatar在100%兼容Gravatar的同时,还有很多优点

具有更快的速度服务完全架设并运行在中国大陆境内,几乎是毫秒级的相应,真的可以提高博客的速度

更高的稳定性,因为项目架构在国内,我们属于国内,不可能出现被墙,简单来说不会出现时不时访问不了的情况

还有更高的头像展现率,在自有头像库的基础上囊括了Gravatar和QQ的头像库,更加的丰富

还支持较高效率的头像更新速率,五分钟刷新,自己心爱的头像马上展现在自己的心心念念的博客上

Cravatar头像源我们该怎么接入呢

这里我主要讲WordPress和typecho的接入方法

其他博客系统自己摸索就好了

WordPress的接入方法

只需要将以下代码

加入你的插件或主题的 functions.php 里即可

if ( ! function_exists( 'get_cravatar_url' ) ) {

    function get_cravatar_url( $url ) {
        $sources = array(
            'www.gravatar.com',
            '0.gravatar.com',
            '1.gravatar.com',
            '2.gravatar.com',
            'secure.gravatar.com',
            'cn.gravatar.com',
            'gravatar.com',
        );

        return str_replace( $sources, 'cravatar.cn', $url );
    }

    add_filter( 'um_user_avatar_url_filter', 'get_cravatar_url', 1 );
    add_filter( 'bp_gravatar_url', 'get_cravatar_url', 1 );
    add_filter( 'get_avatar_url', 'get_cravatar_url', 1 );
}

if ( ! function_exists( 'set_defaults_for_cravatar' ) ) {
    /**
     * 替换 WordPress 讨论设置中的默认头像
     */
    function set_defaults_for_cravatar( $avatar_defaults ) {
        $avatar_defaults['gravatar_default'] = 'Cravatar 标志';

        return $avatar_defaults;
    }

    add_filter( 'avatar_defaults', 'set_defaults_for_cravatar', 1 );
}

if ( ! function_exists( 'set_user_profile_picture_for_cravatar' ) ) {
    /**
     * 替换个人资料卡中的头像上传地址
     */
    function set_user_profile_picture_for_cravatar() {
        return '<a href="https://cravatar.cn" target="_blank">您可以在 Cravatar 修改您的资料图片</a>';
    }

    add_filter( 'user_profile_picture_description', 'set_user_profile_picture_for_cravatar', 1 );
}

但是要注意的是7b2,日主题,子比主题主题作者已经摒弃了Gravatar头像

使用的自己的头像方案,所以无法支持Cravatar头像

typecho的接入方法

我们主要是对官方的Gravatar换源,这个很简单

找到自己的博客程序的根目录,将以下代码加到站点根目录的 config.inc.php 中即可

define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cravatar.cn/avatar/');

Cravatar官网地址

https://cravatar.cn

Cravatar的头像源

找到你的主题目录,找到Gravatar头像加速功能

把这个填进去即可

https://cravatar.cn/avatar

测试一下速度

你会发现加载只花了98毫秒,不得不说非常的给力

有兴趣的小伙伴可以自己替换一下

就写这么多了,祝各位朋友生活愉快!