加速访问基于 Github Pages 和 Hexo 的博客

本文探讨如何加速访问基于 Github Pages 和 Hexo 的博客。大家搭建博客广泛采用了 Hexo + NexT + Github Pages 的方式。众所周知,这种类型的博客未经优化,打开速度比较慢,本文探讨优化的方法,包括修改依赖的字体资源,更换博客托管平台等方式,加速博客的访问。

1. 探索 Hexo + NexT 的博客打开速度比较慢的原因

由于我本人原本就比较重视博客的打开速度,所以博客中使用的资源均已进行了不同程度的优化。比如博文中的图片均外链于图床「简书、七牛等」,博客的头像和网站的图标均优化了分辨率和画质,关闭了所有 NexT 自带的动画效果等。

经过上述优化后,打开我的博客,通过 Chrome 的开发者工具可以看到,访问博客所请求的资源大多均可在 1 秒内获得相应,但是其中仍然有三个资源请求失败:

通过查询这些 HTTP 请求,可以发现,请求失败的原因是无法从 Google 的服务器中获取到 Lato 字体相关的资源「翻墙后可正常获取这些资源文件」:

2. 修改博客所依赖的字体资源

打开 NexT 的主题配置文件「_config.yml」,找到如下图所示的字体设置区域,删除全局字体族「Lato」。

之后再次访问博客,速度会大大加快。当然也可以设置网页所使用的字体族,具体设置方式参见文末的参考链接。

3. 博客托管平台比较

由于博客部署在 Github Pages, 所以在国内访问速度显然会比较慢。可选方案为国内的代码托管平台「码云」,码云提供了 Coding Pages 服务,使用起来比 Github Pages 更加方便。但是同样的 Hexo + NexT 博客部署到码云,打开时会出现部分 Js 资源无法找到的错误,如下图所示:

以上错误的原因我未过多探究,由于该平台有此错误,故我采用的方案是:将博客部署在「七牛云存储」中,这样做可显著提高博客的访问速度。

使用站长之家的「网站测速工具」对分别部署在「七牛」和「Github Pages」的我的两个博客进行测速,结果如下所示,速度高下立判。

4. 将博客部署到七牛云存储时遇到的坑

参考文末链接中的方法即可顺利将博客部署在七牛中,并可使用七牛提供的临时域名访问博客,不过我仍遇到一些坑,造成了一些困扰。

遇到的问题一:虽然博客部署成功,但是通过我自己的域名访问直接报 404 错误。后来发现的原因是 DNS 有问题,更换 DNS 后即可正常访问「如使用 阿里 DNS」。我这里的网络一向对七牛支持不好,不知是什么原因。

遇到的问题二:七牛默认采用「融合 CDN」技术手段,加速网站的访问,该方案会显著影响动态文件的请求效果,如更新某篇文章后,默认情况下过了 30 天才能在网页上看到更新。官方提供了方案用来及时刷新缓存:

刷新缓存和生效时间
CDN 缓存规则设置

所以七牛提供的加速功能最好只针对静态文件,但对于我们的静态博客来说,更新博客后手动刷新一下缓存其实并不麻烦,并且七牛的缓存刷新时间可以进行设置,利大于弊。

5. 参考链接

  1. NexT 主题中从服务器加载 Google 字体
  2. Google 字库导致 Hexo NexT 首页加载变慢
  3. Web 中文字体应用指南
  4. 跨平台字体效果浅析
  5. 浅析中英文基本字形的演变和发展
  6. 新手入门:选择字体的五个原则
  7. Hexo 博客系列:部署到七牛
  8. 多平台同步上传客户端「七牛」