Hotdry.
web-architecture

从 Render 换到阿里云 ESA:免费部署挺香,但国内 400ms 延迟让我崩溃

Render 的免费部署体验确实好,但国内延迟 400ms 让人受不了。换到 ESA 后延迟降到 18ms,虽然要自己配 CI/CD,但速度提升 95% 太值了。记录我的真实迁移过程。

我的情况

我是个人开发者,有个技术博客(Astro 静态站),月访问量 3 万左右,流量 10GB。

之前部署在 Render 上,冲着 "免费" 和 "自动部署" 去的。用了几个月后,最近换到了阿里云 ESA。

核心原因:国内访问太慢了,延迟经常 400ms+

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

为什么一开始选 Render

1. Heroku 凉了,大家都推荐 Render

2022 年 Heroku 取消免费版后,技术社区都在讨论 "Heroku 替代品":

  • Reddit 上最多人推荐 Render
  • YouTube 教程都在讲 "如何从 Heroku 迁移到 Render"
  • 官方文档写得很友好

我虽然没用过 Heroku,但看大家都在用 Render,就跟风了。

2. 免费版够用(750 小时 / 月)

Render 免费版的配置:

  • 静态站点:免费 100GB 流量 / 月
  • Web Service:750 小时 / 月(够跑一个小应用)
  • 自动 HTTPS 证书
  • 自动部署(push 代码就上线)

对于我这种小博客,完全够用。

3. 部署体验很好

Render 的部署流程:

1. 连接 GitHub 仓库
2. 选择分支
3. 配置构建命令(npm run build)
4. push 代码 → 自动部署

全程自动化,不用操心。

第一次用的时候觉得:"这也太方便了!"

4. 支持多种框架

Render 原生支持:

  • Next.js
  • Astro
  • Remix
  • SvelteKit
  • 甚至 Docker

不像有些平台只支持特定框架,Render 的兼容性很好。

Render 的实际体验

优点(确实不错)

1. 部署流程完美

从 push 代码到上线,全程 3-5 分钟:

  • 自动检测到 push
  • 自动拉取代码
  • 自动安装依赖
  • 自动构建
  • 自动部署

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

2. 预览环境

每个 Pull Request 会自动生成预览 URL,测试完再合并。

这个功能对团队协作很有用(虽然我是个人项目)。

3. 控制台简洁

Render 的 Dashboard 设计很好,找功能很快,不像有些平台菜单套三层。

4. 文档质量高

官方文档写得很清楚,遇到问题基本都能找到答案。

而且有很多 "从 XXX 迁移到 Render" 的教程。

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

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

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

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

  • 北京:TTFB 420ms
  • 上海:TTFB 380ms
  • 广州:TTFB 410ms
  • 成都:TTFB 460ms
  • 深圳:TTFB 390ms

平均延迟 400ms+,用户打开页面要等半天。

而且抖动严重,高峰期能到 600ms。

原因:Render 的服务器主要在美国(俄勒冈、俄亥俄),国内访问要跨太平洋,延迟自然高。

2. 免费版会 "休眠"(坑)

Render 免费版有个大坑:15 分钟无访问会自动休眠

下次访问时要 "唤醒",需要 30-60 秒。

对于博客来说,深夜没人访问,第二天早上第一个访客要等 1 分钟才能打开,体验极差。

3. 构建有时候很慢

虽然大部分时候 3-5 分钟部署完,但偶尔会遇到 "构建排队",要等 10-20 分钟。

后来发现是因为免费版优先级低,高峰期要排队。

4. 国内无节点

Render 没有亚太节点(只有美国),更别说国内节点了。

看了一下官方 Roadmap,短期内也不会加。

为什么换到 ESA

触发点:用户投诉

有天一个读者留言:"你这博客打开好慢,是不是挂了?"

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

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

决定试试 ESA

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

看了一下 ESA 免费版:

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

决定试试。

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

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

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

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

迁移步骤

1. 本地构建测试

先在本地跑一下构建:

npm run build
# Astro 生成静态文件到 dist 目录

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@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Upload to OSS
        uses: manyuanrong/setup-ossutil@v3.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 dist/ oss://my-blog-bucket/ --update

      - name: Purge CDN cache
        run: |
          # 可选:刷新 CDN 缓存
          ossutil cdn-purge oss://my-blog-bucket/

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

4. 切换 DNS

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

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

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

ESA 的使用体验

优点(让我满意的地方)

1. 国内访问快了 20 倍

迁移后我又测了一遍:

地点 Render ESA (备案后) 提升
北京 420ms 18ms 95.7% ↓
上海 380ms 15ms 96.1% ↓
广州 410ms 22ms 94.6% ↓
成都 460ms 28ms 93.9% ↓
深圳 390ms 16ms 95.9% ↓

从 400ms 降到 20ms,快了 20 倍。

自己打开博客也觉得 "秒开",用户反馈也说快多了。

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

ESA 国内多地访问测速对比

2. 不会休眠

ESA 是纯 CDN,没有 "休眠" 这个概念。

凌晨 3 点访问和下午 3 点访问,速度一样快。

3. 免费 50GB 够用

虽然比 Render 的 100GB 少,但对我的博客(10GB / 月)完全够用。

如果超了,按量付费(¥0.24/GB),也比 Render 付费版便宜。

4. 安全能力开箱即用

ESA 免费版自带:

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

Render 这些都没有,要自己接 Cloudflare。

5. GitHub Actions 不限制构建时间

Render 免费版有 750 小时 / 月限制(虽然对个人够用)。

GitHub Actions 公开仓库有 2000 分钟 / 月,而且只计算运行时间。

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

缺点(需要接受的地方)

1. 需要备案

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

备案流程:

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

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

如果你不想备案:

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

2. 需要自己配置 CI/CD

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

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

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

3. 控制台相对复杂

Render 的控制台很简洁,ESA 的控制台功能多、选项多。

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

我的选择逻辑

选 Render 的理由

如果你是:

  • 海外用户为主(80% 以上)
  • 想要 0 配置部署(不想折腾 CI/CD)
  • 域名没备案(ESA 国内节点需要备案)
  • 需要后端服务(Render 支持 Web Service/Database)
  • 不在乎延迟(400ms 可以接受)

那 Render 是更好的选择。

选 ESA 的理由(我的情况)

如果你是:

  • 国内用户为主(80% 以上)
  • 域名已备案愿意备案
  • 不介意配置 CI/CD(一次配置永久生效)
  • 看重访问速度(延迟低是第一优先级)
  • 纯静态站点(博客 / 文档 / 作品集)
  • 流量不大(50GB / 月以内)

那 ESA 免费版更合适。

常见问题

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

A:用 GitHub Actions。

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

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

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

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

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

如果真超了:

  • Render:继续免费,但可能被限速
  • ESA:按量付费(¥0.24/GB),透明度高

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

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

选择:

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

Q4:Render 的 "休眠" 问题怎么解决?

A:Render 免费版的 Web Service 会休眠,但静态站点不会休眠

我之前说的 "休眠" 是针对 Web Service(后端应用)。

如果你只是部署静态博客,Render 不会休眠。

但国内延迟高的问题还是存在(400ms)。

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

A:有,但很宽松。

GitHub Actions 免费额度(公开仓库):

  • 2000 分钟 / 月
  • 20 个并发任务
  • 500MB 存储

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

Render 虽然构建时间不限,但优先级低,高峰期要排队。

成本对比(真实数据)

Render 免费版

  • 流量:100GB / 月(静态站点)
  • 休眠:Web Service 会休眠,静态站点不会
  • 构建时间:不限(但优先级低)
  • 安全:无 DDoS/WAF
  • 实际成本:$0

但要承受:国内延迟 400ms

ESA 免费版

  • 流量:50GB / 月
  • 休眠:不会休眠
  • 构建时间:无限制(自己构建)
  • 安全:DDoS/WAF/CC 防护全免费
  • 实际成本:¥0

额外获得:国内延迟 20ms

我的选择

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

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

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

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

总结

Render 是好产品

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

  • 部署体验无敌(push 代码就完事)
  • 免费版功能多(静态站点 + Web Service + Database)
  • 支持多种框架
  • 文档质量高
  • 适合海外用户

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

但对我来说,ESA 更合适

我的选择逻辑很简单:

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

用户体验 > 部署便利性。

最终建议

选择取决于你的用户在哪

场景 推荐方案 理由
海外用户为主 Render 自动部署 + 海外速度快
国内用户为主 ESA 国内速度快 20 倍 + 免费
需要后端服务 Render 支持 Web Service/Database
纯静态站点 ESA CDN 专业 + 国内速度快
不想备案 Render 不需要备案

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

如何领取 ESA 免费版

  1. 打开阿里云官网:https://www.aliyun.com
  2. 搜索 "ESA" 或 "边缘安全加速"
  3. 点击 "免费试用"
  4. 按提示开通即可

或者直接用这个链接http://s.tb.cn/e6.0Fu67m


参考链接

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

查看归档