由于Typecho的评论默认调用的是Gravatar的头像,从而导致每次打开网站,都会因为从国内到海外Gravatar服务器的蜗牛速度,而导致网页会加载老半天。这时候我们可以采取一些步骤,将网站的头像源转化成为国内的Gravatar服务器头像的镜像服务器,从而大幅度的改善网页加载性能。


具体修改方法:

打开网页根目录下的/var/Typecho/Common.php,找到public static function gravatarUrl()函数

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

将其中的secure.gravatar.comwww.gravatar.com替换成国内的镜像域名即可。
通常使用的有七牛版:dn-qiniu-avatar.qbox.me
或者中科大版:gravatar.proxy.ustclug.org
极客族版:sdn.geekzu.org
V2EX版:cdn.v2ex.com/gravatar/
这四种都支持HTTPS

public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
    {
        if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
            $url = __TYPECHO_GRAVATAR_PREFIX__;
        } else {
            $url = $isSecure ? 'https://sdn.geekzu.org' : 'https://gravatar.proxy.ustclug.org';
            $url .= '/avatar/';
        }

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

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

        return $url;
    }

另一种修改思路

我们也可以直接加入一条全局define语句将__TYPECHO_GRAVATAR_PREFIX__改为国内CDN的url
在网站根目录下的config.inc.php中加入下面这条规则即可。

define('__TYPECHO_GRAVATAR_PREFIX__', 'https://sdn.geekzu.org');
Last modification:May 3rd, 2020 at 12:15 am