网站在国内打开很慢?原因就三类,解法按预算挑一个
服务器在海外、页面里引用了被墙资源、静态文件没走 CDN——国内访问慢基本逃不出这三类原因。这篇按我们自己网站的改造实录,给出从零成本到双部署分流的完整解法阶梯,附全国拨测前后对比。
我们的网站原来只部署在 Vercel(服务器在海外),国内访问时快时慢。上周做了一轮完整改造:国内服务器 + CDN + DNS 分流,海外流量照走 Vercel。改造后用 itdog 做 156 个节点的全国拨测,绝大多数地区在 0.5 秒内打开,最快的节点 0.03 秒。这篇把诊断思路和解法写下来。
先诊断:慢的原因就三类
第一类:服务器在海外。 物理距离加上跨境链路拥堵,延迟高、丢包多,高峰期尤其明显。用 17ce 或 itdog 全国拨测一下,如果各地「连接」耗时普遍几百毫秒以上,就是这个问题。
第二类:页面引用了被墙或被限速的资源。 这类最冤:服务器可能不慢,但页面里一行代码把整体体验拖死。自查清单,打开你网站源码搜这些域名:
- fonts.googleapis.com / fonts.gstatic.com(Google 字体,会阻塞渲染,我们自己就踩了这个坑)
- www.google.com/recaptcha(人机验证,国内直接转圈)
- YouTube / Vimeo 嵌入视频
- cdn.jsdelivr.net 等时好时坏的公共 CDN
浏览器会等这些请求超时才继续渲染,国内用户看到的就是好几秒白屏。解法是零成本的:字体自托管、验证码换国内可用的方案、视频换国内源。
第三类:静态资源没走 CDN。 图片、视频、字体都从源站直出,服务器带宽一小(国内轻量服务器普遍只有几 Mbps),几个人同时访问就堵车。
解法阶梯:按预算和客户结构挑
| 方案 | 成本 | 国内速度 | 海外速度 | 适合 |
|---|---|---|---|---|
| 只清理被墙资源 | 0 | 有改善 | 不变 | 所有人,先做这步 |
| 整站迁回国内服务器 | 备案 + 几百元/年起 | 快 | 变慢 | 客户几乎全在国内 |
| 国内服务器 + 国内 CDN | 再加流量费,量小每月几块钱 | 很快 | 变慢 | 国内为主,页面资源多 |
| 双部署 + DNS 分流 | 两份部署 + 上面全部 | 很快 | 快 | 国内海外客户都重要 |
前三个好理解,重点说最后一个,也是我们自己用的方案。
双部署 + DNS 分流是怎么工作的
思路:同一个域名,国内用户解析到国内服务器(前面套国内 CDN),海外用户解析到 Vercel 这类全球边缘平台。两边跑同一份代码。
关键在 DNS:DNSPod、阿里云解析的免费版都支持「按线路解析」——境内线路指向国内 CDN,默认线路指向海外。用户无感知,两边各自拿到最快的路径。
几个实操中真实踩过的点,写出来省你排查时间:
- 国内这份必须先备案,国内 CDN 也强制要求备案,流程见备案实录
- HTTPS 证书验证要走 DNS 方式。分流之后,Let's Encrypt 的验证服务器在海外,会被解析到海外那份部署上,常规 HTTP 验证必然失败,第一次配的人很容易卡在这里
- 服务器防火墙记得放行 443 端口。腾讯云轻量服务器默认只开 22 和 80,我们就因为这个排查了半天「为什么 HTTPS 不通」
- CDN 缓存规则要分层:静态资源缓存 30 天以上,HTML 短缓存,接口不缓存,发版后记得刷新缓存
改造前后的实测对比
改造前(仅 Vercel):国内访问不稳定,部分地区秒级,高峰期更差。
改造后全国 156 节点拨测:电信、联通、移动三网平均总耗时进入 0.5 秒内,最快节点 0.03 秒,海外访问走 Vercel 不受影响。对一个既做国内生意又有出海客户的公司,这套结构目前看是性价比最好的答案。
怎么判断自己该做到哪一层
按客户结构决定,不要按技术炫酷程度决定:
- 客户全在海外:什么都不用做,服务器留在海外,把被墙资源清了就行
- 客户全在国内:备案 + 国内服务器 + CDN,一步到位
- 两边都有:先清理被墙资源(当天见效),再评估双部署——它的维护成本是两份部署要保持同步,适合网站已经稳定、值得投入的阶段
想知道自己网站现在国内表现如何,用 itdog.cn 免费拨测一次就有答案。如果测出来惨不忍睹又不想自己折腾,这活我们熟,毕竟刚在自己网站上做完一遍。