本站优化与服务
本站做过的优化
构建流程
整个站点由 Hugo 生成,本质上是一组静态页面。作为一个 Golang 用户,我很难完全客观地评价 Hugo 用 Go modules 管理主题这件事是否优雅,尤其是它还要求构建环境里有合适的 Hugo binary 和 Go 环境。不过至少从结果看,构建速度确实非常快。
和很多 Hugo 站点类似,yezhisheng.me 的构建流程由 GitHub Actions 在仓库 push 后触发,生成的静态内容再通过 CDN 分发给最终访问者。
CDN
- Cloudflare Pages 用于全球访问。
- Upyun 用于服务 https://yezhisheng.com.cn。
在比较过 Vercel 和 Cloudflare 之后,我最终选择了 Cloudflare。主要原因是它对 IPv6 的支持比较完整,在中国大陆 CERNET 环境里的响应速度也更好。不过 Vercel 在构建流水线方面更灵活,对中国大陆其他 ISP 的质量也可能更稳定,同时还提供基于 LetsEncrypt 的自动 SSL 证书续期,对配置 CAA 记录也很方便。
Cloudflare 对我来说比较熟悉,毕竟已经持续用了五年多。它的 CNAME 加速也很容易通过简单点击启用。另一个值得一提的点是,Cloudflare Pages 可以直接镜像 GitHub Pages 原始仓库里的 HTML 文件,这样回源开销基本可以摊薄到亚毫秒级别。
中国大陆的情况稍微不同。无论是 OSS 还是带 HTTPS 的 CDN,主流云厂商几乎都很难长期免费提供,包括阿里云、腾讯云、七牛云,更不用说 AWS China 和 Azure China。最后我选择了又拍云,主要是因为它提供免费的 HTTPS CDN 和 HTTP/3 支持,代价是节点数量较少,也没有 HTTPS rewrite。源站则直接设置为 GitHub Pages。
主题相关优化
当前服务
得益于 Cloudflare 的开发体验和易用性,一些小服务逐渐以几乎零额外成本的方式跑了起来,背后主要依赖 Cloudflare CDN 和 Cloudflare Workers。