本文摘要
针对 Gravatar 在国内被 DNS 污染、导致 Typecho 头像无法显示或加载缓慢的问题,可通过将默认头像源替换为第三方镜像来解决。推荐修改博客根目录的配置文件来指定镜像地址,也可直接修改程序源码中的头像地址;文中列出多个可用镜像,并提到 cravatar 支持 QQ 头像。适用于受此问题困扰的 Typecho 站长。

前言

Gravatar(英语:Globally Recognized Avatar)是一项用于提供在全球范围内使用的头像服务。只要你在 Gravatar 的服务器上上传了你自己的头像,你便可以在其他任何支持 Gravatar 的博客、论坛等地方使用它。 从 2011 年 8 月起,gravatar.com 被部分地区屏蔽,部分用户访问博客时头像可能无法正确显示。2014 年,网站被解封,页面访问正常。约 2014 年 11 月左右,网站再次被屏蔽,部分用户访问博客时头像无法正确显示。现时已被封锁,方式为 DNS 污染。

由此导致 Typecho 无法显示 Gravatar 头像或加载非常缓慢。

📌

So,修改默认的 Gravatar 头像源为第三方镜像源,即可解决显示问题


解决方法

✅ 更新提示

2024年4月15日 13:10:53,我已将我自己博客的头像源(config.inc.php中的__TYPECHO_GRAVATAR_PREFIX__)更换为cravatar,该源直接支持QQ头像,很棒!

/** 更换头像源 */
/**define('__TYPECHO_GRAVATAR_PREFIX__', 'https://dn-qiniu-avatar.qbox.me/avatar/');*/
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cravatar.cn/avatar/');

方法 1(推荐):修改文件config.inc.php

博客网站根目录下找到文件config.inc.php,直接在最后加入以下代码:

/** 更换头像源 */
define('__TYPECHO_GRAVATAR_PREFIX__', 'http://dn-qiniu-avatar.qbox.me/avatar/');

其中http://dn-qiniu-avatar.qbox.me/avatar/即为你要设置的镜像源地址

**推荐源:(点击地址可查看是否存活)**

源名称源地址
七牛(推荐)https://dn-qiniu-avatar.qbox.me/avatar/
极客族(推荐)https://sdn.geekzu.org/avatar/
九月的风https://cdn.sep.cc/avatar/
V2EXhttps://cdn.v2ex.com/gravatar/
Cravatarhttps://cravatar.cn/avatar/
Ihuanhttps://gravatar.ihuan.me/avatar/
lolihttps://gravatar.loli.net/avatar/
WeAvatarhttps://weavatar.com/avatar/

方法 2:修改文件Common.php

1. 打开网站目录下的/var/Typecho/Common.php文件

2. 找到以下代码(直接搜索部分代码或前往 900~1100 行用你的大眼睛扫描):

/**
* 获取gravatar头像地址
*
* @param string $mail
* @param int $size
* @param string $rating
* @param string $default
* @param bool $isSecure
* @return string
*/
public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
{
if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
$url = __TYPECHO_GRAVATAR_PREFIX__;
} else {
$url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';
$url .= '/avatar/';
}
if (!empty($mail)) {
$url .= md5(strtolower(trim($mail)));
}
$url .= '?s=' . $size;
$url .= '&r=' . $rating;
$url .= '&d=' . $default;
return $url;
}

3. 修改代码中指向的地址https://secure.gravatar.com及 http://www.gravatar.com为第三方镜像源。(以上代码块中的第16行)

例:

...
} else {
$url = $isSecure ? 'https://cravatar.cn/' : 'https://gravatar.loli.net';
$url .= '/avatar/'(镜像源文件夹);
}
...

**推荐源:**

源名称源地址
七牛(推荐)https://dn-qiniu-avatar.qbox.me
极客族(推荐)https://sdn.geekzu.org
九月的风https://cdn.sep.cc
V2EXhttps://cdn.v2ex.com (注意该镜像源的文件夹为/gravatar/)
Cravatarhttps://cravatar.cn
Ihuanhttps://gravatar.ihuan.me
lolihttps://gravatar.loli.net
WeAvatarhttps://weavatar.com