Hotdry.
web-architecture

从 Netlify 换到阿里云 ESA:部署方便但国内慢,我最终选了速度

Netlify 的自动部署确实香,但国内延迟 300ms 让我受不了。换到 ESA 后延迟降到 15ms,虽然要自己配 GitHub Actions,但一次配置永久生效。分享我的真实迁移经历。

我的情况

我是个人开发者,有个 Next.js 技术博客(静态导出),月访问量 2-3 万,流量 8GB 左右。

之前部署在 Netlify 上,用了一年多。最近换到了阿里云 ESA,主要原因:国内访问太慢了

这篇文章记录一下为什么换、怎么换、换了之后的体验。不是软文,纯个人经历

为什么一开始选 Netlify

1. Git push 就自动部署(太爽了)

Netlify 最大的优势就是部署体验无敌:

1. 连接 GitHub 仓库
2. 配置构建命令(npm run build)
3. push 代码
4. 自动构建、自动部署、自动上线

全程自动,啥都不用管。

第一次用的时候我震惊了:"这也太方便了吧!"

2. 免费 100GB 流量(够用)

Netlify 免费版每月 100GB 流量,对于我的小博客(8GB / 月)来说完全够用。

比 GitHub Pages 的 100GB 软限制更明确,也有详细的流量统计。

3. 前端开发者都在用(跟风)

当时看技术文章、YouTube 视频,前端开发者都在用 Netlify 部署:

  • React 博客 → Netlify
  • Vue 项目 → Netlify
  • Next.js 站点 → Netlify

感觉不用 Netlify 就不是 "现代" 前端开发者了。

4. 不需要备案(当时域名没备案)

我的域名当时还没备案,Netlify 不需要备案就能用自定义域名,很方便。

Netlify 的实际体验

优点(确实很棒)

1. 部署体验完美

从 push 代码到上线,全程 2-3 分钟,不用操心任何事:

  • 自动检测到 push
  • 自动触发构建
  • 自动部署到 CDN
  • 自动清除缓存

控制台还能看到实时构建日志,部署失败会邮件通知。

2. 预览环境很棒

每个 Pull Request 都会自动生成预览链接,测试完再合并到主分支。

这个功能对于团队协作很有用(虽然我是个人项目,但偶尔也会用到)。

3. 免费 HTTPS 证书

Let's Encrypt 证书自动签发、自动续期,不用操心。

4. 控制台简洁

Netlify 的控制台设计很好,找功能很快,不像有些平台菜单套菜单。

缺点(让我最终放弃的原因)

1. 国内访问慢(最致命)

这是我换掉 Netlify 的主要原因。

我用站长工具测了一下国内访问速度:

  • 北京:TTFB 320ms
  • 上海:TTFB 380ms
  • 广州:TTFB 350ms
  • 成都:TTFB 420ms

延迟太高了,用户打开页面要等半天。

而且抖动很严重,有时候能到 500ms+。

原因:Netlify 在国内没有节点,所有请求都要跨境到新加坡或美国,经过国际出口,延迟自然高。

2. 构建时间有限制

Netlify 免费版每月 300 分钟构建时间。

我的 Next.js 博客构建一次大概 3-4 分钟,一个月最多能构建 75-100 次。

对于个人博客来说够用,但如果频繁更新或者有多个项目,可能会超。

3. Serverless Functions 限制

Netlify 提供 Serverless Functions(类似 AWS Lambda),但免费版限制:

  • 125,000 次调用 / 月
  • 100 小时执行时间 / 月

我没怎么用这个功能,但对于有后端需求的项目,可能不够。

4. 偶尔会有小故障

用了一年多,遇到过 2-3 次 Netlify 的小故障(构建失败、部署慢),虽然很快恢复,但还是会担心。

为什么换到 ESA

触发点:用户反馈慢

有天一个读者留言:"你这博客打开好慢啊,是不是服务器在国外?"

我自己测了一下,确实慢。而且看 Google Analytics,90% 的访客都在国内

这时候我意识到:虽然 Netlify 部署方便,但用户体验不好,就失去意义了

决定试试 ESA

正好我的域名刚完成 ICP 备案,可以用阿里云 ESA 的国内节点了。

看了一下 ESA 免费版的配置:

  • 50GB 流量 / 月(比 Netlify 的 100GB 少,但对我够用)
  • 国内节点(延迟低)
  • 免费安全防护(DDoS/WAF)

决定试试。

迁移过程(比想象中简单)

最大的顾虑:失去自动部署

Netlify 最大的优势是自动部署,ESA 没有这个功能。

但我发现可以用 GitHub Actions 实现自动化,效果一样。

迁移步骤

1. 本地构建测试

先在本地跑一下构建,确保没问题:

npm run build
# Next.js 生成静态文件到 out 目录

2. 开通 ESA + 配置 OSS

  • 阿里云控制台开通 ESA(免费版)
  • 创建 OSS Bucket 作为源站
  • ESA 添加站点,源站指向 OSS

3. 配置 GitHub Actions

创建 .github/workflows/deploy.yml

name: Deploy to ESA

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          
      - name: Install dependencies
        run: npm ci
        
      - name: Build
        run: npm run build
        
      - name: Upload to OSS
        uses: manyuanrong/setup-ossutil@v2.0
        with:
          endpoint: oss-cn-hangzhou.aliyuncs.com
          access-key-id: ${{ secrets.OSS_KEY_ID }}
          access-key-secret: ${{ secrets.OSS_KEY_SECRET }}
      
      - name: Sync files
        run: |
          ossutil cp -r out/ oss://my-blog-bucket/ --update

配置一次,以后 push 代码就自动部署,和 Netlify 一样方便。

4. 切换 DNS

把域名的 CNAME 记录从 Netlify 改成 ESA 提供的接入域名。

等 DNS 生效(10-30 分钟),完成。

总耗时:2 小时左右(主要是写 GitHub Actions 配置)。

ESA 的使用体验

优点(让我满意的地方)

1. 国内访问快了 10 倍

迁移后我又测了一遍:

地点 Netlify ESA (备案后) 提升
北京 320ms 18ms 94% ↓
上海 380ms 15ms 96% ↓
广州 350ms 20ms 94% ↓
成都 420ms 28ms 93% ↓

从 300-400ms 降到 15-30ms,快了 10 倍以上。

用户体感非常明显,自己打开博客也觉得 "秒开"。

下面是实测的国内多地访问延迟对比图:

ESA 国内多地访问测速对比

2. 免费 50GB 够用

虽然比 Netlify 的 100GB 少,但对我的博客(8GB / 月)来说完全够用。

如果真超了,可以按量付费(¥0.24/GB),也比 Netlify 超量后的价格便宜。

3. 安全能力开箱即用

ESA 免费版自带:

  • DDoS 防护(20Gbps)
  • WAF 规则
  • CC 攻击防护
  • IP / 地域封禁

Netlify 这些都没有,要自己接 Cloudflare 或其他 WAF。

4. GitHub Actions 部署也很稳

虽然不是 Netlify 那种 "0 配置",但 GitHub Actions 配置一次后,体验一样:

  • push 代码 → 自动构建 → 自动上传 → 自动刷新 CDN

而且 GitHub Actions 免费额度很高(2000 分钟 / 月),不用担心超。

缺点(需要接受的地方)

1. 需要备案

如果你想用 ESA 的国内节点,域名必须有 ICP 备案。

备案流程:

  1. 在阿里云提交备案申请
  2. 填资料、拍照
  3. 等审核(7-15 天)

这是国内政策要求,所有国内 CDN 都要备案。

如果你不想备案,可以:

  • 继续用 Netlify(海外节点)
  • 用 ESA 海外节点(但延迟会高一些)

2. 需要自己配置部署

不像 Netlify 那样 "连接 GitHub 就完事",ESA 需要自己配置 GitHub Actions。

但说实话,配置一次也就 1-2 小时,之后就是全自动的。

对于有一定动手能力的开发者,这不是大问题。

3. 控制台相对复杂

Netlify 的控制台很简洁,ESA 的控制台功能多、选项多,一开始会有点懵。

但用几次就熟悉了,而且中文界面,看文档也方便。

我的选择逻辑

选 Netlify 的理由

如果你是:

  • 海外用户为主(80% 以上)
  • 想要 0 配置部署(不想折腾 CI/CD)
  • 域名没备案(ESA 国内节点需要备案)
  • 流量较大(50-100GB / 月,免费版够用)
  • 需要 Serverless Functions

那 Netlify 是更好的选择。

选 ESA 的理由(我的情况)

如果你是:

  • 国内用户为主(70% 以上)
  • 域名已备案愿意备案
  • 不介意配置 CI/CD(一次配置永久生效)
  • 看重访问速度(延迟低是第一优先级)
  • 流量不大(50GB / 月以内)

那 ESA 免费版更合适。

常见问题

Q1:Netlify 自动部署很方便,ESA 怎么实现?

A:用 GitHub Actions。

配置一次后,效果和 Netlify 一样:push 代码就自动构建、部署。

我上面贴了完整的 GitHub Actions 配置,复制粘贴改几个参数就能用。

Q2:ESA 只有 50GB,Netlify 有 100GB,不够用怎么办?

A:对个人博客来说,50GB 完全够用。

我的博客月访问量 2-3 万,流量才 8GB。除非你有大量图片 / 视频,否则 50GB 够用。

如果真超了:

  • Netlify:超量后要付费,而且价格不便宜
  • ESA:按量付费(¥0.24/GB),透明度高

Q3:我不想备案,但想要国内速度快,怎么办?

A:没办法,国内 CDN 都需要备案,这是政策要求。

选择:

  1. 去备案(虽然麻烦,但一劳永逸)
  2. 用海外 CDN + 国内优化(比如 Cloudflare 的 China Network,但要付费)
  3. 接受延迟高,继续用 Netlify/Vercel

Q4:GitHub Actions 会不会也有限制?

A:有,但很宽松。

GitHub Actions 免费额度:

  • 2000 分钟 / 月(公开仓库)
  • 500MB 存储

我的博客构建一次 3-4 分钟,一个月构建 500 次都够。

Netlify 只有 300 分钟 / 月,GitHub Actions 是 2000 分钟 / 月,宽裕多了。

Q5:迁移会影响 SEO 吗?

A:不会,只要域名不变。

迁移只是换了 CDN,域名和内容都没变,对 SEO 没影响。

而且国内访问变快,Google PageSpeed 分数还提升了,对 SEO 是好事。

成本对比(真实数据)

虽然两者都有免费版,但我们对比一下 "真实成本":

Netlify 免费版

  • 流量:100GB / 月
  • 构建时间:300 分钟 / 月
  • Functions:125K 次 / 月
  • 带宽:免费
  • 实际成本:$0

但要承受:国内延迟 300-400ms

ESA 免费版

  • 流量:50GB / 月
  • 构建时间:无限制(自己构建)
  • EdgeScript:不限次数
  • 安全能力:全免费
  • 实际成本:¥0

额外获得:国内延迟 15-30ms

我的选择

对于国内用户为主的博客,速度 > 部署便利性

Netlify 的自动部署确实方便,但国内延迟 300ms 让用户体验很差。

ESA 虽然要配置 GitHub Actions,但一次配置后就是全自动的,而且国内访问快 10 倍。

为了用户体验,值得花 1-2 小时配置一次。

总结

Netlify 是好产品

我没有黑 Netlify 的意思,它确实很棒:

  • 部署体验无敌(Git push 就完事)
  • 免费版流量多(100GB)
  • 预览环境、回滚等功能很实用
  • 适合海外用户

如果你的用户主要在海外,Netlify 是首选。

但对我来说,ESA 更合适

我的选择逻辑很简单:

  1. 90% 用户在国内 → 速度最重要
  2. Netlify 延迟 300ms → 用户体验差
  3. ESA 延迟 15ms → 快了 10 倍
  4. 虽然要配置 CI/CD → 但一次配置永久生效

用户体验 > 部署便利性。

最终建议

选择取决于你的用户在哪

场景 推荐方案 理由
海外用户为主 Netlify 自动部署 + 海外速度快
国内用户为主 ESA 国内速度快 10 倍 + 免费
国内外均衡 ESA (国内) + Netlify (海外) DNS 分流,两者结合
不想备案 Netlify 不需要备案

没有绝对的好坏,只有适不适合你的场景。


参考链接

说明:本文是我的个人真实体验,不是广告。我从 Netlify 迁移到 ESA 主要是因为国内访问速度问题,分享出来供大家参考。

查看归档