快速自检:看 Build Logs 末尾
Build Logs 末尾出现:
Build exceeded maximum duration of 1500sProcess killedBuild cancelled
且 build 总时长 ≥ 25 分钟。
最短处理路径
Step 1:检查 build 命令
很多人没注意,pnpm install && next build 中 install 阶段就吃了 5-15 分钟。先优化 install:
# 用 pnpm 而不是 npm
# 配 .npmrc 加速
NPM_CONFIG_REGISTRY=https://registry.npmmirror.com/
# Cloudflare Pages 支持
Step 2:升级到 Workers Build
Cloudflare 2024 年起推 Workers Build 替代 Pages。
| 项 | Pages Free | Workers Free | Workers Paid |
|---|---|---|---|
| build 时长 | 25 min | 25 min | 90 min |
| 月度 build 次数 | 500 | 100 | 6,000 |
| Bindings 支持 | 部分 | 完整 | 完整 |
数据来源:developers.cloudflare.com 与 Workers Builds 文档。
Step 3:拆 monorepo
如果是 Turborepo:
# wrangler.toml
[build]
command = "turbo build --filter=web^... --cache-dir=.turbo"
只构建 changed package,省 50-70% 时间。
Step 4:依赖缓存
Cloudflare Pages 默认只缓存 node_modules。手动加 pnpm store:
# .github/workflows/build.yml(本地预 build 方案)
- uses: actions/cache@v3
with:
path: |
~/.pnpm-store
.next/cache
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
或用 Turborepo Remote Cache(vercel.com/docs/concepts/monorepos)跨 build 共享 cache。
Step 5:本地 build 推 dist
如果上面四步都不够,跳过 Cloudflare build:
# 本地或 GitHub Actions
pnpm install
pnpm build
# 直接推
npx wrangler pages publish ./dist --project-name=my-app
这样 Cloudflare 只做静态托管,不参与 build。失去 PR Preview 但 build 不再超时。
为什么会这样
Cloudflare Pages build container 性能限制:
- 4 vCPU、8GB 内存(Pages Free / Pro)
- 25-30 分钟时长上限
- 不像 Vercel 那样有 enhanced build container
- 国际网络下载依赖较慢(特别是中国时区)
对于 Next.js 15 + tRPC + Tailwind + 50 个 page 项目,build 时长 20-30 分钟是常态。如果项目继续膨胀,必然超时。
继续查 Cloudflare Pages timeout
现象:偶尔超时
依赖下载慢导致。看 build logs 哪一行卡了几分钟。如果是 pnpm install 阶段,配 npm mirror。
现象:每次都超时
项目规模超过 Cloudflare Pages 能力。考虑迁移到 Vercel(5GB build memory + 45 分钟时长)或 Netlify。
现象:本地 build 5 分钟 / Cloudflare 25 分钟
主要是依赖下载差异 + monorepo build 缓存丢失。看上面 Step 3 + Step 4。
如果还没恢复
迁回 Vercel:
| 项 | Cloudflare Pages | Vercel |
|---|---|---|
| Free 档 build | 25 min | 45 min |
| Pro 档 build | 30 min | 90 min |
| Build memory | 8GB | 16GB(Enhanced) |
| 缓存机制 | 基础 | Turborepo Remote 集成 |
Vercel Free $0/月足够大多数项目。如果你不依赖 Cloudflare Bindings(D1 / R2 / KV),Vercel 更稳。
跨地区访问 Cloudflare Dashboard
国内访问 Cloudflare Dashboard 偶尔加载缓慢,特别是 Pages 部署详情页和 Real-time Logs 流式输出。一条海外服务跑 GitHub Actions / Cloudflare 的稳定线路能让 Dashboard 顺畅、排查更快。
相关报错
相关阅读
- Vercel build out of memory:如果迁到 Vercel 后遇到新问题
- Cloudflare Pages 国内速度:build 过了但国内访问慢怎么修
- Vercel 国内访问慢:Vercel 替代方案的国内速度优化
- Sub-Store 跨客户端订阅转换管理工具