前阵子恢复博客的更新,但是,不论前台还是后台,打开都很缓慢。一开始以为是换了海外主机的原因,然而检查发现并不是。度娘上搜了一下发现没有比较完整的文章。于是责任心爆棚的我就想到在这里汇总一下,让遇到这个问题的人有更加清晰的解决方案。

辣么,究竟是什么问题呢?其实主要原因就是“伟大的墙”。在这堵“伟大的墙”的强力“保护”下,Wordpress产生了两大问题——字体问题和头像问题,这两项内容无法加载,造成了网站访问缓慢,让人心烦。

字体问题

wordpress使用了非常流行的google fonts,什么是google fonts?可以点击下面页面GoogleFonts,当然,不翻墙是看不到的。简单来说,就是google准备了很多开放字体(Open Fonts),用户可以在网站页面免费使用这些字体,还不用下载到本地。好处当然是很多了,例如不用担心客户端缺字体影响显示效果,也不用担心网页加载字体有速度和流量的问题(墙内除外)等。缺点当然也很明显,如果你所在的区域无法访问google,那就悲剧了。是的,我没说别人,就说你呐?看这篇文章的人,别东张西望了,仔细看下面。

wordpress主题是怎么使用google字体的呢?基本上从官方主题的twenty twelve(2012)开始,就有类似这样的一个函数function twentytwelve_get_font_url() {},函数代码我就不贴了,太占地方,它的主要作用就是根据自己主题需要获取一段google fonts代码,其中这一句很重要

$font_url = add_query_arg( $query_args, 'https://fonts.geekzu.org/css' );

是的,问题很明了了,就是这里面的url国内访问不了。怎么办?换掉它就行了!360公司学雷锋做好事一样的做了一个公共库,作用和google那个类似,只要把url换成

http://fonts.useso.com/css

就行了。注意,这更换过的传输协议是http,可不是https,后者是无法加载字体的,会导致页面加载更加缓慢。

后台访问缓慢,与页面访问缓慢基本是一个道理,但是修改起来有点麻烦。怎么办?用插件呗!太机智了,已经有小盆友@苏阳写好了插件等你安:open fonts替换插件。可惜的是,经过测试,这个插件也有点问题,就是行代码:

return str_replace('//fonts.geekzu.org/','//fonts.useso.com/',$text);

应该改为:

return str_replace('https://fonts.geekzu.org/','http://fonts.useso.com/',$text);

原因上面已经说了。

当然,还有更加决绝的办法,如果你根本不需要Theme、后台使用开放字体(并不推荐),那么你也可以使用另一个插件:Disable Google Fonts。安装启用以后,就跟开放字体说拜拜了,访问速度当然也上去了。

头像问题

与字体类似,wordpress默认使用的头像服务是Gravatar,当然,不翻墙也是访问不了的,这导致需要加载头像的页面显示缓慢。当然,解决这个问题的第一个方法就是后台“设置>讨论”页面里把“显示头像”的选项勾掉就行了,不显示头像,就没有这个烦恼了。但是,我就是矫情得要用这个头像怎么办?除了可以选择第三方的各种插件之外,我更推荐在主题的functions.php里加代码的方法,利用国内的留言服务“多说”的系统头像替换掉Gravatar的头像:

function mytheme_get_avatar($avatar) {
    $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

这样,就解决了头像无法加载进而拖慢页面显示速度的问题了。

经过以上简单的折腾,wordpress的网站速度可以说有了飞跃性的提升。当然这里要说的是,如果你的主题本身就不支持google fonts,那就根本不存在第一个问题,不过还是建议安装Disable Google Fonts插件或者open fonts替换插件,把后台速度优化一下,毕竟写文章的时候还是需要重视工作效率的。