中国大陆访问与加速
Novora 官方云端方案跑在境外(Vercel + Neon 新加坡),中国大陆访问受运营商线路影响。这篇讲清现状、可选方案和各自代价,帮你选一条适合学校的路。
先理解问题在哪
一次访问要经过三段:
text
教室设备
|
v
DNS 解析(改成自定义域名能解决"默认域名被干扰")
|
v
Vercel Edge(境外节点,线路质量由运营商决定)
|
v
Vercel Functions: sin1 新加坡
|
v
Neon: ap-southeast-1 新加坡换域名只能解决第一段,中间这段跨境线路质量不受你控制。所以"换了域名还是慢"是正常现象,不是配置错了。
你能控制什么
| 环节 | 能做的 | 效果 |
|---|---|---|
| 域名 | 绑定自定义域名 | 绕开默认域名可能被干扰的问题 |
| 函数区域 | 固定 sin1 新加坡 | 避免函数与数据库跨洲往返 |
| 数据库区域 | Neon 选 AWS 新加坡 | 与函数同区域 |
| 静态资源 | 独立 CDN(ASSET_CDN_BASE) | 图片和字体走国内 CDN |
| 整体架构 | 改成本地/内网部署 | 彻底不跨境 |
前三项是基本配置,已经在默认部署里做好。真正有空间的是后两项。
方案对比
方案一:自定义域名(最低成本)
适合:老师主要在校园网使用,偶尔校外访问。
text
绑定 exam.example.com成本几乎为零,能改善入口可用性,但不能改善跨境线路本身。用学校网络和手机网络各测一次,再决定够不够用。
方案二:静态资源走 CDN
适合:页面能打开但加载慢,尤其是首次加载。
设置环境变量:
text
ASSET_CDN_BASE=https://你的cdn地址/需要先把构建产物同步到 CDN,并验证跨域和缓存策略。
配错会白屏
ASSET_CDN_BASE 配置错误会导致 JS 或 CSS 加载失败。零基础部署不要填。另外 fonts.css 使用 /fonts/... 绝对路径,不会被这个前缀改写,字体要走 CDN 需要额外处理。
方案三:本地 / 内网部署(彻底解决)
适合:教室都在校园网内,或者学校要求数据不出校园。
text
教室内网 -> 学校服务器(Docker + 内嵌 PostgreSQL)优点:
- 完全不受跨境线路影响;
- 内网延迟通常只有几毫秒;
- 数据留在校内。
代价:
- 需要一台可长期开机的服务器;
- 需要自己做备份、更新和监控;
- 校外访问需要公网 IP、端口映射和 HTTPS,通常还要备案。
完整步骤见本地部署总览。
方案四:中国大陆云服务器
适合:既需要公网访问,又不能接受跨境线路。
通常需要:
- 中国大陆云服务器(部署方式与本地相同,用 Node + PostgreSQL);
- 域名 ICP 备案(使用大陆服务器对外提供服务时);
- 视情况涉及公安备案和其他合规要求。
具体以学校、云服务商和当地法规要求为准。
怎么判断该选哪个
按这个顺序测:
- 学校网络能不能稳定打开首页? 打不开 → 直接考虑方案三或四;
- 能打开但很慢? 先试方案二,再评估方案三;
- 教室都在校园网内? 方案三通常最稳妥;
- 需要老师在家访问? 方案三 + 公网映射,或方案四。
测试方法
用学校实际网络和至少两种手机运营商网络分别测:
text
1. 首页能否打开,加载多久
2. /api/time 是否返回 JSON,响应多久
3. 上课高峰时段再测一次
4. 连续刷新十次,观察失败次数只在办公室测一次就上线,往往会在教室现场出问题。
常见的错误期待
| 期待 | 现实 |
|---|---|
| "买了国内域名就能加速" | 域名只是入口名称,不改变服务器位置 |
| "开 Cloudflare 代理就一定快" | 普通国际版不能保证大陆线路质量 |
| "换个 DNS 就好了" | DNS 只影响解析,不改变跨境链路 |
| "函数放新加坡就够了" | 那是必要条件,不是充分条件 |
合规边界
- 使用境外托管时,通常不涉及 ICP 备案,但要接受线路波动;
- 使用中国大陆服务器或大陆 CDN 时,通常需要实名认证和 ICP 备案;
- 是否涉及数据出境、个人信息和学校信息管理要求,应按学校的信息管理规范执行;
- 具体要求以服务商和当地法规为准,本页不构成法律意见。
相关
- 本地部署主线:本地部署总览
- 反向代理与 HTTPS:反向代理与 HTTPS
- 函数区域设置:Functions 迁移到新加坡
- 迁移方案:迁移与更换部署方式