本页说明如何使用自建测速节点,包含端点说明、App 集成方式、流大小选择建议与浏览器自检。字节流由边缘节点实时生成,不依赖任何静态大文件。
/speedtest。X-Speedtest-Size 或 URL 参数 ?size= 调大流。测速下载:GET /speedtest(默认虚拟流 4 GiB;用 ?size=<bytes> 或请求头 X-Speedtest-Size: <bytes> 指定)
延迟探测:GET /speedtest 带 Range: bytes=0-0 → 206 + 1 字节(探针只读一两字节即复用连接)
健康检查:GET /ping → 200 + { pong:true, server_ts, client_ts, region? },客户端用 Date.now() 自算 RTT
上传测速:POST /upload → 接收请求体、统计字节数,返回 { ok:true, bytes, ms, server_ts }(上行速率由客户端用「请求体大小 ÷ 耗时」得出)
响应头:Accept-Ranges: bytes · Cache-Control: no-store · Content-Type: application/octet-stream
将外网测速源指向你的部署域名:
val EXTERNAL_SPEEDTEST_URL = "https://<your-subdomain>.pages.dev/speedtest" // 延迟探针:GET .../speedtest,带请求头 Range: bytes=0-0(期望 206 + 1 字节) // 健康检查:GET .../ping(期望 200,RTT 用 Date.now() 自算) // 下载:并发开 4 条 GET .../speedtest,读到 EOF 或 25s 上限 // 自定义大小:发送请求头 X-Speedtest-Size: <bytes>(或 URL 参数 ?size=) // 上传测速:POST .../upload,请求体为 N MiB 字节,客户端计时求上行速率(样本建议 ≤ 25 MiB)
推荐并发 4 条连接、单条读到 EOF 或 25 秒上限即停止;取总下载字节 ÷ 耗时作为平均速率。
?size= / X-Speedtest-Size)App 读到 EOF 或 25s 为止;流太小会提前 EOF、平均速率塌陷。规则:
所需字节数 ≥ (目标带宽 Mbps ÷ 8) × 25s × 1.2
| 目标带宽 | 25s 内至少需 | 默认 4GiB 是否够 |
|---|---|---|
| 100 Mbps | ≈ 375 MB | 够 |
| 300 Mbps | ≈ 1.1 GB | 够 |
| 1 Gbps | ≈ 3.75 GB | 够(默认即 4GiB) |
| 2.5 Gbps | ≈ 9.4 GB | 需 X-Speedtest-Size: 10737418240 |
| 10 Gbps | ≈ 37.5 GB | 需更大 size 且边缘出口需 ≥10Gbps |
提示:超出默认 4 GiB 时,请在请求头或 URL 中显式指定大小,避免提前 EOF 导致测速偏低。
回到 状态页 可点「Ping 延迟」「探测 Range 0-0」「下载样本」「上传测速」验证上下行端点。
字节流由边缘节点实时生成,不依赖任何静态大文件,可直接作为 App 的外网测速源。