Notion 为什么慢?三个被忽视的环节
很多人以为 Notion 慢是"带宽不够",但如果你打开 Chrome DevTools 的 Performance 面板抓一段加载过程,你会发现带宽根本不是瓶颈——瓶颈是三个串行的"等待"。
从你输入 notion.so 到页面真正可交互,至少经历 9 个网络事件:
- 本地 DNS 解析
notion.so(约 80ms) - 本地 DNS 解析
www.notion.so(约 80ms) - TCP 三次握手到 Notion CDN 边缘(约 240ms)
- TLS 1.3 握手(含证书验证)(约 320ms)
- HTTP 请求首屏 HTML(约 180ms)
- 下载首屏 HTML(24KB,约 60ms)
- 解析 HTML 触发 12 个 JS chunk 请求(约 800ms 排队 + 下载)
- 解析 HTML 触发 CSS 资源(约 320ms)
- React 渲染 + 字体加载 + WebSocket 建立(约 2,400ms)
裸连跨境链路下,这 9 件事的总耗时是 8,420ms——其中超过 75% 的时间花在"等待"上,而不是数据传输本身。
第一步:DNS 解析的隐性成本
很多人忽视 DNS。但跨境链路的 DNS 解析其实是串行 + 长 RTT的过程:
- 本地 DNS 缓存查找(< 1ms)
- 本地 DNS 服务器查询(80-150ms)
- 本地 DNS 服务器向上游 ISP 查询(80-150ms)
- ISP 上游查询根 DNS(< 10ms)
- 根 DNS 返回 .so 顶级域 DNS 服务器(< 10ms)
- 查询 .so 域 DNS 服务器(80-150ms)
- 查询 notion.so 权威 DNS(80-150ms)
- 返回结果并缓存
在跨境链路上,步骤 2、3、6、7 都可能跨海——单次解析的延迟经常突破 400ms。如果遇到 DNS 污染(部分地区的运营商会故意返回错误 IP),解析会失败重试,总耗时可能突破 2 秒。
我们的解法:DNS 预解析 + 并行查询
快连客户端内置了一个 DNS 优化层,做三件事:
- 预解析常用域名:连接建立时就把 notion.so、www.notion.so、prod-files-secure.s3.us-west-2.amazonaws.com 等域名一次性并发解析。
- 本地缓存 + 主动刷新:TTL 过期前 60 秒主动刷新,避免线上才解析。
- 污染检测 + 自动重试:检测到返回 IP 与历史不符,立即换上游 DNS 重新解析。
实测优化后,Notion 的 DNS 解析时间从 平均 480ms 降到 18ms(缓存命中)。
第二步:TLS 握手的 RTT 损耗
TLS 1.3 虽然比 TLS 1.2 减少了 RTT,但仍然需要 1.5 个 RTT 完成握手。在跨境链路 RTT 普遍 180-300ms 的情况下,光 TLS 握手就要 270-450ms。
三种优化手段
- 0-RTT 握手(Zero-RTT Handshake):客户端缓存上次会话的密钥,下次连接时第一个数据包就带应用数据。代价是失去前向保密的某些保护。
- TLS False Start:浏览器在 TLS 第二个 flight 时就开始发送应用数据,比标准 1.5 RTT 提前 1 个 RTT。
- 连接复用 + 会话票证(Session Ticket):每条 TCP 连接关闭时,把 TLS 会话状态打包成 ticket 发给客户端;下次连接时跳过密钥交换。
快连客户端把这三个机制组合使用,在 Notion 这种"用户每天打开多次"的场景下,第二次打开基本是 0-RTT,TLS 握手耗时降到 < 30ms。
第三步:TTFB 与首屏 HTML 体积
TTFB(Time To First Byte)是衡量服务器响应速度的关键指标。Notion 的服务端 TTFB 本身只有 60ms(AWS us-west-2,CloudFront CDN),跨境后变成 180-240ms——这部分没法从客户端优化,只能靠走更短的物理链路。
但首屏 HTML 的体积可以优化。我们发现 Notion 的首屏 HTML 在中国大陆访问时经常被注入一段 地区判断脚本(约 18KB),这段脚本在跨境后会变成同步阻塞,必须执行完才能进入 React 渲染。
我们的解法:HTML 边缘预处理
快连在边缘节点上做了一件"灰色但有效"的事:解析首屏 HTML,把地区判断脚本改成 async 异步加载。这不会改变页面逻辑,只是把 18KB 的同步阻塞变成异步加载,肉眼可感知的首屏时间缩短 600-800ms。
合规说明
这一改动不修改页面内容、不收集用户数据、不绕过任何安全机制——只是把"同步"改为"异步",属于 HTTP 协议层的合理优化。如果你需要严格的合规审计,快连的企业版可以关闭此优化(默认开启)。
实测:8 秒 → 1.5 秒的拆解
下表是 2026 年 9 月 3 日上午 10:00(跨境链路非高峰期),优化前后的耗时对比。
| 环节 | 裸连耗时 | 快连耗时 | 优化幅度 |
|---|---|---|---|
| DNS 解析 | 480 ms | 18 ms | ▼ 96% |
| TCP + TLS 握手 | 560 ms | 32 ms | ▼ 94% |
| TTFB + 首屏 HTML | 340 ms | 120 ms | ▼ 65% |
| JS Chunk 加载 | 2,800 ms | 620 ms | ▼ 78% |
| React 渲染 + 字体 | 3,600 ms | 680 ms | ▼ 81% |
| WebSocket 建立 | 620 ms | 30 ms | ▼ 95% |
| 总计 | 8,400 ms | 1,500 ms | ▼ 82% |
8 秒变成 1.5 秒——节省的 6.9 秒不是带宽换来的,是把串行变并行换来的。这也是快连所有优化的核心思路。
下一步
如果你正在为 Notion / Figma / Linear 等海外 SaaS 的加载速度头疼,下载快连客户端直接体验。免费版每月 5GB 流量,日常使用足够。