前言
前两天把博客部署到又拍云做国内加速,折腾了一整天。这篇文章整理一下我知道的几种静态博客国内部署方案,给想搞但不知道从哪下手的朋友参考。
方案一:GitHub Pages + 国内CDN(我目前在用的)
原理:GitHub Pages 托管的博客,套一层国内CDN做加速。
优点:
- GitHub Pages 本身免费
- 只需要给CDN交钱(甚至有些有免费额度)
- 写文章→推GitHub→自动构建→CDN同步,一套流程走完
缺点:
- 需要折腾CDN配置
- 两个站点内容要保持一致比较麻烦
推荐CDN:
- 又拍云:有免费额度(好像10GB/月),操作员授权略麻烦
- 腾讯云CDN:按量计费,新人优惠多
- 七牛云:老牌CDN,文档比较全
方案二:又拍云全程托管(今天踩坑最多的)
流程:
- 注册又拍云 → 实名认证
- 创建云存储 Bucket
- 构建好的
public/文件夹上传到 Bucket - 开启CDN加速,绑定域名
上传方式:
FTP(不推荐):
1 | # 又拍云的FTP经常连不上,做好心理准备 |
HTTP API(推荐):
1 | import requests, base64 |
又拍云小贴士:
- 操作员和Bucket是两个东西,操作员需要先授权才能访问Bucket
- 「操作员授权」页面写了”用于API请求和FTP登录”,但FTP经常抽风
- HTTP API比较稳,推荐用这个上传
- 测试域名一般长这样:
你的bucket.test.upcdn.net - 首页默认文档不用配,
/会自动找index.html
方案三:腾讯云 COS + CDN
流程:
- 注册腾讯云 → 实名认证
- 创建 COS(对象存储)Bucket
- 上传
public/文件 - 开启 CDN 加速
用 COSCLI 上传:
1 | # 安装 COSCLI |
优点:
- COSCLI 比又拍云的 FTP 稳多了
- 腾讯云控制台比又拍云现代化
- 新用户有免费额度
缺点:
- 需要实名认证(学生认证也行)
- CDN 流量超出后要付费
方案四:阿里云 OSS + CDN
和腾讯云差不多,只是换了个平台:
1 | # 安装 ossutil |
特点:
- 阿里云文档最全
- 海外节点也很多
- 价格比腾讯云略贵一点点
方案五:Vercel + 自定义域名(非国内友好但最简单)
1 | # 安装 Vercel CLI |
优点:
- 一键部署,不用配任何东西
- 自动HTTPS
- GitHub集成,push自动部署
缺点:
- 国内访问时好时坏(看运气)
- 大文件加载慢
- 域名需要备案才能用国内CDN
方案六:Cloudflare Pages
1 | # 连GitHub仓库,自动部署 |
优点:
- 全球节点多
- 免费额度很大
- 自带DDoS防护
缺点:
- 国内速度一般(Cloudflare的国内节点有限)
- 有些地区会被墙
我的选择和建议
如果你是学生党、没啥预算:
- 只要国内快 → 又拍云(有免费额度)或腾讯云COS(新人有优惠券)
- 懒得折腾 → 先用 GitHub Pages,等受不了慢再加速
- 追求自动化 → GitHub Pages + GitHub Actions 自动同步到CDN
- 不怕麻烦 → 又拍云 + HTTP API 手动上传(就像我今天这样)
GitHub Actions 自动同步模板
这是我今天搞的 workflow,推送 GitHub 自动构建并同步到又拍云:
1 | name: Deploy to GitHub Pages + Upyun |
踩坑记录
1. URL尾部斜杠
GitHub Pages 会自动把 /tags 重定向到 /tags/,但其他静态托管不会。所有内链都要写完整路径,否则点过去就404。
2. FTP不靠谱
又拍云的FTP今天折腾了半天死活连不上,最后换成HTTP API一次成功。遇到FTP连不上的直接换方案,别死磕。
3. 评论系统要分开处理
如果你用了基于GitHub的评论系统(giscus/utterances),国内站点会加载不了。需要加判断:
1 | if (location.hostname.includes('upcdn')) { |
4. 备份!备份!备份!
改配置前一定要备份。今天AI把我标签页的内容清空了一次,还好从git历史恢复回来了。
写在最后
静态博客部署到国内这件事,说简单也简单,说麻烦也麻烦。核心就是:构建一次,分发多地。
选哪个方案不重要,重要的是找到适合自己动手能力的。如果你跟我一样没啥基础,建议从GitHub Pages开始,等觉得慢了再加CDN,不要一上来就搞全套。
毕竟折腾的目的是写文章,不是折腾本身。
封面图:伊蕾娜