Vercel 部署 Next.js 后的国内加速手记
Next.js 项目部署到 Vercel 后国内访问拉胯,绑域名并把解析指向 cname-china.vercel-dns.com 一招搞定加速,附前后对比。
起因:部署很顺,国内却打不开
这个站用 Next.js 写的,往 Vercel 上一推,自动构建、自动签证书、全球边缘节点分发,整套流程丝滑得让人挑不出毛病。海外打开基本秒开,体验拉满。
但一回到国内就原形毕露了——用 Vercel 默认分配的那个 *.vercel.app 域名,国内基本是打不开的,要么 DNS 解析不到,要么连上了也转圈转到超时。自己用还能挂代理凑合,可这是给别人用的站,总不能要求每个访客都带梯子吧。
所以第一反应是:绑个自己的域名。绑完之后确实能打开了,但速度依然说不上舒服,首屏经常要等好几秒,偶尔还会卡在某个资源上半天。这就要说说问题到底出在哪了。
问题出在哪
*.vercel.app 这个域名在国内是有”污染”的,所以直接用基本没戏。绑自己的域名能绕开这一点,但光绑域名还不够——关键看你解析到哪。
Vercel 绑域名时,默认会告诉你把 CNAME 指向 cname.vercel-dns.com。这个地址走的是 Vercel 的全球边缘网络,节点主要在海外,离国内最近的也就香港、日本、新加坡这些。国内用户访问时常常会绕路,晚高峰更是慢得离谱,表现就是:
- 首屏白屏好几秒,HTML 倒是回来了,资源慢慢吞吞地加载
- 有时候直接超时,刷新一下又好了,很玄学
- 移动网络下尤其明显,4G/5G 却加载出 2G 的感觉
大概就是下面这样,加载条走得很吃力,大部分都是被墙了的:

处理:换一个针对国内的解析入口
其实 Vercel 给国内留了个专门入口,只是默认不会主动告诉你。解决办法就一步——把 CNAME 指向 cname-china.vercel-dns.com,注意中间多了个 china。
具体操作:
- 在 Vercel 绑域名:项目 Settings → Domains,填上自己的域名,Vercel 会提示你要加一条 CNAME 记录。
- 去域名服务商改解析:找到 DNS 解析设置,把那条 CNAME 记录的值,从默认的
cname.vercel-dns.com改成cname-china.vercel-dns.com。主机记录按你的需要填,一般用www或者@。 - 等生效:DNS 生效通常几分钟到半小时,Vercel 检测到解析对了会自动签发 HTTPS 证书,之后就能正常访问了。
有个小坑提醒一下:根域名(也就是 @)能不能加 CNAME,得看你的域名注册商。有些注册商不支持根域直接做 CNAME,那就用 www 子域,再把根域 301 跳转到 www 上,效果一样。现在多数服务商都支持所谓”CNAME 强制平铺”(把根域当 CNAME 处理),Cloudflare、DNSPod 这些都没问题。
就改这么一个字符,从 cname.vercel-dns.com 变成 cname-china.vercel-dns.com。
效果
改完之后体感非常明显,同样的网络环境:
- 首屏基本秒开,不再有那种白屏等待
- 资源加载顺滑,晚高峰也不怎么掉链子
- 移动网络下也能正常用了
对比一下就是下面这样,前后判若两站:

简单说,就是从”勉强能打开”变成了”还挺快”。核心区别在于这个 china 入口会把国内流量导向更近、更稳的节点,少绕一大圈海底线缆。
小结
整个处理其实特别简单,没什么高深操作,难点只在于知道有这么个入口。Vercel 默认给的是全球通用的解析地址,对国内不友好;而带 china 的那个才是给国内用户准备的。
所以如果你也是 Vercel 部署、面向国内用户,记一句就够了:
绑域名,然后把 CNAME 指向
cname-china.vercel-dns.com,剩下的交给时间。
另外提一嘴,这套方案适合中小站点轻量加速。如果访问量大到一定级别,或者对国内速度要求很高,再考虑前面套一层国内 CDN,不过那是另一篇文章的事了。