这网站先前的访问速度很慢,原因其实一直很清楚:一是服务器在境外,一到晚上200~300ms的Ping外加10~50%丢包必然快不起来;二是WordPress默认主题使用了Google Web Fonts,而Google服务器出于众所周知的原因间歇性不能访问,所以浏览器可能要等到超时才会继续加载页面。
原因虽然清楚,但解决却一直拖着,主要是由于:
- 不想备案,所以不考虑搬回境内。
- 同等预算、国内访问速度快的,稳定性会打折扣;速度快、稳定性高的,价格又过高(大约US$20/月起步)。
- 虽然搞个国内的CDN不难,但由于决定使用全站HTTPS,所以一定要找个支持HTTPS的CDN(否则浏览器会提示混合内容,并阻止非HTTPS内容,页面完全不像样)。然后又一直以为搞个CDN需要像CloudFlare那样改NS、迁移证书。
- 不想折腾WordPress主题,所以一直用默认的。
- WP主题基本都是一堆函数写成的,看着就头疼,改动想想就更头疼。
终于决定着手解决这两个问题时,却发现远比想象中简单。
任务一:找个支持HTTPS的国内CDN,且设置不能太复杂
解决方案:七牛云存储CDN + WP Super Cache
Google了一下支持HTTPS的CDN,最后发现普通用户使用的只有七牛。
流程简单来说就是:注册 -> 新建公开空间 -> 设置镜像目标网站 -> 申请绑定 dn-xxxxx.qbox.me
的三级域名 -> WP Super Cache的CDN设置Off-site URL为该域名。
具体的图文教程见:https://tumutanzi.com/archives/12128
需要注意的是,这并不是全站CDN,首页依然从源网站获取,仅仅是加速所有静态文件,但相比先前已经快了很多。
另一个小问题是,WP Super Cache虽然能替换所有绝对路径,但一些相对路径无法加速,除非自己改成绝对路径(例如右边那个Flash时钟目前是加载速度最慢的)。
任务二:让WP默认主题不使用Google Web Font
解决方案:只要把两处on改成off即可(见下)
虽然网上搜到说要 deregister()
或 dequeue()
,但翻了下 functions.php
却发现早就有现成的开关。
打开 wp-content/themes/twentythirteen/functions.php
,找到
$source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' );
把第一个 on
改成 off
;找到
$bitter = _x( 'off', 'Bitter font: on or off', 'twentythirteen' );
同样把 on
改成 off
。
最后在WP Super Cache的Contents标签里刷一下缓存,这样就不会再加载这两个网络字体了。
这样做的缺点是字体变成了不太协调的Georgia(标题)和Arial(正文)。
更新
新版WordPress在博客本身的代码中也嵌入了Google Web Font,位置是 wp-includes/script-loader.php
里面的以下这行:
if ( 'off' !== _x( 'on', 'Open Sans font: on or off' ) ) {
同样把 on
改成 off
即可。
全HTTPS的另一个问题是,https://secure.gravatar.com 也会间歇被墙。相关代码在 wp-includes/pluggable.php
里面,但不建议直接改。在 Settings – Discussion 里面禁用头像即可。