Typecho国内无法使用Gravatar的解决方法

广告ad

Typecho评论默认使用的是Gravatar头像,但因为众所周知的原因,Gravatar在国内无法正常访问,会导致页面访问速度奇慢,也是在昨天把长期挂在电脑的梯子关掉之后才发现这一问题,遂寻找解决方法,在网上搜索了一番,找到了合适的解决方案:可以利用V2EX 的CDN,具体做法:
找到手动修改文件var/Typecho/Common.php的937行。
将如下代码:

public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
{
    $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;
}

替换为:

    public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
{
    $url = $isSecure ? 'https://cdn.v2ex.com/gravatar/' : 'http://gravatar.duoshuo.com/avatar/';

    if (!empty($mail)) {
        $url .= md5(strtolower(trim($mail)));
    }

    $url .= '?s=' . $size;
    $url .= '&r=' . $rating;
    $url .= '&d=' . $default;

    return $url;
}

替换之后,原来Gravatar头像直接通过V2EX 的CDN访问,速度大大提升了。
效果如下:
替换前:Gravatar头像
替换后

已有 4 条评论
  1. 在conf.inc.php加一段 define('__TYPECHO_GRAVATAR_PREFIX__', 'https://gravatar.cat.net/avatar/'); 也可以解决

    1. 谢谢大佬赐教

  2. 学习学习

    1. 大佬哪需要来我这学习(滑稽)

谈笑风生