使用文档

自建测速节点 · 使用文档

本页说明如何使用自建测速节点,包含端点说明、App 集成方式、流大小选择建议与浏览器自检。字节流由边缘节点实时生成,不依赖任何静态大文件。

快速开始

  1. 打开 状态页,点「Ping 延迟 / 探测 Range 0-0 / 下载样本 / 上传测速」确认端点可达、上下行均正常。
  2. 在 App 中将外网测速源指向你的部署域名 /speedtest
  3. 要测更高带宽,用请求头 X-Speedtest-Size 或 URL 参数 ?size= 调大流。

1. 端点

测速下载GET /speedtest(默认虚拟流 4 GiB;用 ?size=<bytes> 或请求头 X-Speedtest-Size: <bytes> 指定)

延迟探测GET /speedtestRange: bytes=0-0206 + 1 字节(探针只读一两字节即复用连接)

健康检查GET /ping200 + { 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

2. 在 App 中集成

将外网测速源指向你的部署域名:

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 秒上限即停止;取总下载字节 ÷ 耗时作为平均速率。

3. 流大小怎么选(?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 导致测速偏低。

4. 浏览器自检

回到 状态页 可点「Ping 延迟」「探测 Range 0-0」「下载样本」「上传测速」验证上下行端点。

字节流由边缘节点实时生成,不依赖任何静态大文件,可直接作为 App 的外网测速源。

5. 适用场景