--- title: 我把Vercel换成了EdgeOne Pages date: 2026-02-02T01:00:00.000Z draft: false categories: - 技术 - 碎碎念 tags: - Hugo - EdgeOne - Upyun ai_comment: >- 这种双线部署策略很务实,像给网站穿了件"两面穿"外套。EdgeOne Pages 的初期适配问题确实典型,您用 GitHub Actions 做构建层隔离的思路漂亮——相当于给不成熟的服务加了层适配器。DNS 分流配置写得清晰,不过建议补充测试不同地区解析生效时间,我曾遇到部分东南亚节点缓存更新延迟的情况。腾讯云的文档有时像迷宫,但您这实操记录比官方教程更有参考价值。 slug: 20260202 --- 最近感觉 Vercel 虽然好用,但在国内或者部分亚洲地区的访问速度有时候还是不太稳定。前段时间油老师给我推荐了这个 EdgeOne Pages,今天有空试了试腾讯云新出的 EdgeOne Pages。 听说 EdgeOne 的节点覆盖很不错,而且对个人开发者也有免费额度,于是心血来潮,决定把博客的境外加速线路从 Vercel 换成 EdgeOne。 ## 现在的部署方案 为了保证访问速度和稳定性,我现在的策略是: * **国内(境内)**:继续用 **又拍云 (Upyun)**。老牌子了,国内节点多,速度快,用了很久一直很稳,没必要换。 * **国外(境外)**:换成了 **腾讯云 EdgeOne Pages**。用来替代 Vercel,主要负责港澳台和海外的流量。 这样既能保证国内访客秒开,又能照顾到海外访问的体验,相当于搞了个“双保险”。 ## 迁移过程 其实过程没有我想象的顺利,EdgeOne Pages 给我更多的感觉是一个半成品,很多功能还在完善中。 我看了支持的框架,还没有适配 Hugo,实际部署起来坑不少。我试了三次,用自定义配置也没跑通,老是报错。 既然官方的构建环境不太稳,那我就把构建这一步放在自己手里。转变思路:**在 GitHub Actions 里构建好,然后直接把生成的静态文件推送到 EdgeOne Pages**。 ### 1. 准备一个部署脚本 参考一下其他博主的文档,以及询问豆包,下面分享我的思路。首先,在项目里加个脚本 `scripts/deploy_edgeone.sh`,利用 EdgeOne 的 CLI 工具来上传文件。 ```bash #!/bin/bash # EdgeOne Pages Deployment Script # 1. 检查环境变量 if [ -z "$EDGEONE_API_TOKEN" ]; then echo "Error: EDGEONE_API_TOKEN is not set." exit 1 fi # 2. 设置默认值 PROJECT_NAME=${1:-"hugo-blog"} BUILD_DIR=${2:-"./public"} echo "Deploying to EdgeOne Pages..." echo "Project: $PROJECT_NAME" echo "Directory: $BUILD_DIR" # 3. 执行部署命令 # 使用 npx 运行 edgeone CLI,无需全局安装 npx edgeone pages deploy "$BUILD_DIR" -n "$PROJECT_NAME" -t "$EDGEONE_API_TOKEN" # 4. 检查结果 if [ $? -eq 0 ]; then echo "Deployment successful!" else echo "Deployment failed!" exit 1 fi ``` ### 2. 配置 GitHub Actions 然后,在 `.github/workflows/deploy.yml` 里加上这一步。记得先去 EdgeOne 控制台生成一个 API Token,然后放到 GitHub 仓库的 Secrets 里(名字叫 `EDGEONE_API_TOKEN`)。 ```yaml - name: Deploy to EdgeOne Pages env: EDGEONE_API_TOKEN: ${{ secrets.EDGEONE_API_TOKEN }} run: | chmod +x scripts/deploy_edgeone.sh ./scripts/deploy_edgeone.sh hugo-blog ./public ``` 这样一来,每次我推送代码,GitHub Actions 就会自动把 Hugo 构建好的 `public` 文件夹推送到 EdgeOne,既省心又稳定。 ### 关键的 DNS 设置 部署好之后,最关键的一步就是在域名解析里做分流。 我是在 dnspod 服务商那里这样设置的: 1. **默认线路(Default)**:CNAME 指向 EdgeOne 提供的域名。这样海外用户就会走 EdgeOne 的加速节点。 2. **境内线路(China)**:CNAME 指向又拍云的域名。这样国内用户依然走又拍云,速度不受影响。 ## 体验总结 切过来,简单测试一下,整体感觉挺香的。 * **速度方面**:简单测了一下,海外节点的响应确实挺快,感觉比 Vercel 要稳一些。 * **管理方便**:毕竟是腾讯云的产品,控制台全中文,功能看着也直观。 总之,这次调整算是一次小小的升级吧,既保留了国内的优势,又补齐了境外的短板。对于像我这样喜欢把博客托管在静态服务上的朋友,EdgeOne Pages 确实是个不错的替代方案。