Hexo 托管选型:GitHub Pages 与 Cloudflare Pages 的区别

Hexo 负责把 Markdown 文件生成静态网页,但它不负责替你长期托管网站。对新手来说,最常见的两个免费托管选择是 GitHub Pages 和 Cloudflare Pages。

两者都能实现”本地写文章 → 推送到 GitHub → 自动发布上线”这套流程,但源码隐私、构建位置、预览方式和后续扩展空间并不相同。本文不重复两套安装教程,而是帮你把决策的关键点理清楚,让你能够做出适合自己的选择。

结论先行

  • 想把源码、自动化和部署都放在 GitHub 生态内,且能接受公开仓库:选 GitHub Pages;
  • 想免费使用 GitHub 私有仓库管理源文件,同时享受 Cloudflare 的免费 CDN 加速:选 Cloudflare Pages;
  • 只是写静态技术博客:两种 Pages 服务都够用,不必为了”看起来专业”过早上 VPS;
  • 需要服务端程序、数据库、特殊 Nginx 规则或完整系统控制权:两者都不是终点方案,要考虑使用 VPS。

核心区别一览

比较项 GitHub Pages Cloudflare Pages
源码位置 GitHub GitHub 或其他受支持的 Git 平台
免费私有源码 免费版不支持发布私有仓库 可连接 GitHub 私有仓库
构建方式 GitHub Actions Cloudflare 构建系统
发布产物 Pages artifact / GitHub Pages Cloudflare Pages 部署
预览部署 需自行设计工作流 Git 分支和 PR 预览天然支持
独立域名与 HTTPS 支持 支持,与 Cloudflare DNS 集成更顺滑
服务端后端 不适合传统后端 可用 Functions,但不等于完整 VPS
平台迁移 静态文件易迁移 静态文件易迁移
维护服务器 不需要 不需要
免费额度 构建数受 Actions 限制 每月构建次数有上限,流量基本不限

📷 GitHubPages-CloudflarePages

一、源码保护方式不同

这是最容易做决定的一项。

GitHub Free 的 Pages 面向公开仓库;要用私有仓库发布 Pages,需要支持该功能的付费方案。公开源码本身不一定是坏事,技术博客甚至可以把主题配置和写作历史当作作品展示,但必须注意:

  • 仓库中不要包含密钥、Token、API Key 等敏感信息;
  • 不要把未发布草稿或私人信息放进仓库;
  • 图片元数据和 Git 历史也可能泄露信息;
  • 即使后来删除文件,敏感内容仍可能残留在 Git 历史中,需要专门清理才能彻底移除。

Cloudflare Pages 可以连接 GitHub 私有仓库,只让 Cloudflare 获取构建所需的权限。对于希望公开网站、隐藏源码的人,它通常更省事。

我的建议是:不要因为”私有看起来更安全”就放松密钥管理。无论仓库公开还是私有,密钥都不应该直接写进 Git 提交历史,该用环境变量的地方就用环境变量。

二、自动部署链路不同

GitHub Pages 的典型流程是:

1
本地 Markdown → GitHub 仓库 → GitHub Actions 构建 → GitHub Pages 发布

Cloudflare Pages 的典型流程是:

1
本地 Markdown → GitHub 仓库 → Cloudflare 拉取源码并构建 → Pages 发布

最终效果相似,排错入口却不同。GitHub Pages 主要查看 Actions 日志和 Pages 设置;Cloudflare Pages 主要查看 Deployments 构建日志和项目设置。

📷 构建参数
📷 构建日志

如果你已经熟悉 GitHub Actions,前者更集中,遇到问题也更容易在社区找到答案;如果希望少写工作流配置、图形化操作更多,Cloudflare 的构建表单更直观,适合不想折腾 YAML 的人。

📷 GitHubActions
📷 GitHubActions构建

三、域名、HTTPS 与访问路径

两者都提供免费二级域名,也都支持配置独立域名和 HTTPS:

  • GitHub Pages:用户名.github.io;
  • Cloudflare Pages:项目名.pages.dev

对长期运营的博客,建议尽早使用自己持有的域名。原因不是今后申请 AdSense 时会因此”直接加分”,而是域名能与托管平台解耦:今天使用 Cloudflare Pages,明天迁到 GitHub Pages 或 VPS,访问者和搜索引擎仍然访问同一个地址,不会因为换平台而丢失已经积累的收录和外链权重。

GitHub 的项目仓库默认带 /仓库名/ 路径,Hexo 的 root 配置容易出错;站点仓库(即 用户名.github.io 命名的仓库)或绑定独立域名后通常使用根路径 /。Cloudflare Pages 默认项目域名和独立域名一般也使用根路径,配置上更省心一些。

GitHub配置域名
config配置文件配置域名

Cloudflare Pages 在域名同样由 Cloudflare DNS 管理时配置更顺滑,添加域名后几乎自动完成解析;GitHub Pages 也能绑定第三方 DNS 域名,只是需要手工添加 CNAME 记录,并等待 DNS 生效和证书签发。

cloudflare配置域名
DNS-CNAME记录

四、访问速度不同

Cloudflare 有着庞大的全球边缘网络,GitHub Pages 对于小型的常规静态博客也完全够用。但实际访问速度还会受到以下因素影响:

  • 访问者所在地区和网络运营商;
  • 主题打包的 CSS、JavaScript 体积;
  • 图片大小与格式(是否使用了 WebP、是否做了压缩);
  • 第三方字体、统计脚本、评论系统的加载耗时;
  • DNS 解析与缓存策略设置。

因此,”用某个平台就一定更快”这种说法并不严谨。选定平台后,压缩图片、减少第三方脚本、配置好缓存策略,往往比平台间的小幅差异更有实际价值。

如果主要访问者集中在某些特定地区,建议实测不同运营商和地区的可达性,不能只凭自己所在网络下结论——尤其是面向中文用户的博客,不同地区的解析和连通性差异有时比想象中大。

五、预览和回滚体验不同

Cloudflare Pages 会为分支或 Pull Request 提供独立的预览部署链接,适合在正式上线前检查主题样式和长文排版是否正常。每次部署都有独立记录,出问题时回退到上一版本也比较直观。

GitHub Actions 同样能实现预览和回滚,但通常需要额外设计工作流(比如为 PR 单独生成一个部署环境)。对个人博客而言,一个更简单的办法是在本地执行 hexo server 先预览生成结果,确认无误后再 git push 推送到 main,省去搭建复杂预览流程的成本。

无论使用哪一种方案,都建议养成这样的发布习惯:

  1. 本地预览文章和图片是否正常渲染;
  2. 提交前运行一次生产构建,确认没有报错;
  3. 推送后确认部署日志显示成功;
  4. 用手机和无痕窗口分别检查线上页面,排除缓存干扰。

六、成本与免费额度

两个平台的免费额度对个人博客来说通常都绰绰有余,但了解大致边界仍然有必要:

  • GitHub Pages:托管本身免费,但依赖 GitHub Actions 构建,免费账户每月有一定的 Actions 分钟数限额,公开仓库的 Actions 用量通常不计入限额,私有仓库则会消耗额度;
  • Cloudflare Pages:免费版对每月构建次数有上限,超出后需要等待周期重置或升级付费计划,但访问流量本身基本不限,不会因为博客突然被转发而产生额外费用。

对每周更新一到两篇文章的个人博客,两者的免费额度几乎不可能触及上限。真正需要关注成本的场景,是频繁的自动化构建(比如接入了 CI 定时任务)或者团队多人协作导致构建次数暴涨。

七、免费不等于没有限制

两种服务都有平台条款、构建配额、文件大小和使用场景的限制,具体政策也可能会随时调整。虽然个人技术博客通常很难触及限制,但切记不要把它们当成通用文件下载站、视频托管或无限制计算平台使用。

选择时应以官方当前规则为准,对博客来说,更值得关注的是构建是否稳定、日志是否直观、访问域名是否始终在自己控制之下,而不是纠结于额度数字本身。

八、两种方式与 VPS 的区别

Pages 服务最适合纯静态站点。如果你有以下需求,可以考虑 VPS + Nginx:

  • 运行 Node.js、Python、PHP 等常驻后端服务;
  • 自建数据库、站内搜索或评论系统;
  • 使用特殊反向代理规则、访问控制和日志分析;
  • 希望完全掌控软件版本、网络配置与备份策略;
  • 同一台服务器还要运行多个其他服务。

但 VPS 会带来系统更新、防火墙设置、证书申请与续期、备份策略、性能监控和故障处理等额外维护成本,单纯为了发布一个 Hexo 博客就购买 VPS,并不是最优方案。

更好的路径是:先用 Hexo 生成静态文件,搭配独立域名和 Pages 服务快速上线,等未来访问量确实增长、或者需要动态功能时再考虑迁移。通常只需要把 public 目录上传到服务器、配置好 Nginx 并修改 DNS 指向即可完成迁移,文章内容本身无需重写。

九、根据不同场景选择最适合自己的方案

场景 A:第一次搭博客,能接受源码公开

选择 GitHub Pages。它能让你在同一个平台内熟悉仓库管理、Actions 工作流和部署日志,整个链路都在 GitHub 内完成,学习内容更集中。

场景 B:希望源码私密,又不想购买 GitHub 付费方案

选择 Cloudflare Pages。GitHub 保存私有源码,Cloudflare 负责构建与发布,两边各司其职。

场景 C:已经有域名,只想尽快低成本上线

两者皆可,优先看你更熟悉哪个平台的操作。如果域名本身就托管在 Cloudflare,选 Cloudflare Pages 能省去额外的 DNS 跳转配置,体验会更连贯。

场景 D:准备学习服务器运维

可以先用 Pages 把站点跑起来,再单独找一台便宜的 VPS 做实验,不需要和正式博客绑在一起。等 Nginx、证书、备份和安全更新这些环节都熟悉之后,再考虑是否要把博客真正迁移过去,这样风险更低,也不影响博客的正常访问。

十、选择建议

如果目标只是发布一个稳定的 Hexo 博客,优先选择 Cloudflare Pages + GitHub 私有仓库;如果还想顺带公开展示代码、学习 GitHub Actions 的使用,建议选择 GitHub Pages

真正影响博客长期价值的,不是托管部署的方式,而是博客内容是否持续解决具体问题。选一个能长期维护的方案,然后坚持更新,比频繁迁移平台更重要,后续申请 Google AdSense 时,内容质量和更新稳定性也远比托管平台本身更关键。

十一、常见问题 FAQ

Q:换托管平台会影响 SEO 排名吗?
只要域名不变、页面 URL 结构保持一致,更换托管平台本身对 SEO 影响可以忽略不计。真正需要小心的是迁移过程中出现的死链或路径变化。

Q:两个平台能同时用吗?
技术上可以把同一份代码同时部署到两个平台做备份或对比测速,但对个人博客来说意义不大,反而增加了维护成本,一般不建议长期这样做。

Q:免费额度用完了网站会直接下线吗?
通常不会立即下线,而是暂停新的构建,已发布的页面依然可以正常访问,只是无法继续更新内容,等额度重置或升级套餐后即可恢复。

十二、后续相关内容

如果还是觉得两种方式偏复杂,还有一种更简单的方式:使用 Google Blogger ,这个我们接下来会做演示。

如果想使用更强大的站点功能和更复杂的部署方式,建议使用 VPS + Nginx 的部署方式,这一部分我们后续同样会做演示。