Hexo 博客加速实践

最近打开博客的速度特别特别慢。慢到怎样的程度呢?打开篇文章要花 60s 以上,还经常死机。虽然博客没什么人看,但作为本博客最忠实的用户,实在不能忍。就花了点时间排查原因,优化速度。

排查

由于博客使用 Hexo 托管在 Github Pages 上,都是些静态文件的显示,速度慢的原因大致就是资源的加载速度问题。使用 Chrome Console 的 Network 工具,发现有一个发送到 fonts.useso.com 请求持续了几十秒。
然后在 Hexo 相应的 Theme 文件下使用grep -rI fonts.useso.com . 搜索相关字符串,发现了相关的 css 文件。

1
2
font-title = "Lato", Helvetica Neue, Helvetica, Arial, sans-serif
@import url("//fonts.useso.com/css?family=Lato:400,400italic")

当初搭建博客的时候,为了提升加载速度将字体源从 google fonts 替换为 360 提供的前端公共库 CDN,也就是 fonts.useso.com。没想到现在变得这么不稳定。搜了下国内没有好的替换源,再加上 Lato 字体也就一处使用,索性删了。
再次打开 kaywu.github.io,发送到 fonts.useso.com 的请求没有了,速度果然快了不少。
但是,这还不够。

迁移

由于众所周知的原因,Github 连接速度一直很不稳定,时好时坏。要想更快地提升速度,得将博客迁移到国内才行。国内 coding 也提供 Pages 的服务。通过配置 _config.yml,使得 hexo deploy 时可以同时更新两边的内容。

1
2
3
4
5
6
7
8
deploy:
- type: git
repo: https://github.com/KayWu/kaywu.github.io.git
branch: master
- type: git
repo: https://git.coding.net/KayWu/KayWu.git
branch: coding-pages

域名绑定

有了国内国外两处博客,但同时也有了两个地址。最好能统一地址访问,根据不同的情况访问不同的博客。而这就需要我们购买域名并配置 DNS。
域名的话我是去 NameCheap 买的,kaywu.xyz。第一年才 8 块钱。续费的话一年 60 左右,算是比较公道的价格。DNS 使用的是 Dnspod 的免费服务。
在购买了域名后,先将域名与 Pages 绑定。Github 是在仓库的根目录下新建一个名为 CNAME 文件,里面写入要绑定域名。coding 是直接在代码-> Pages 服务里配置。
接着去 NameCheap 将 Dns 设置为 Custom DNS,并添加 f1g1ns1.dnspod.netf1g1ns2.dnspod.net

最后去 Dnspod 配置 Dns 解析,根据线路不同解析到不同的博客地址。

配置完成后等几个小时使 Dns 解析结果更新,就能使用 kaywu.xyz 来访问博客,并且将根据国内国外分别访问 GitHub 或 coding。

参考