#14
Speed TestEdge ComputingBandwidthNetwork Performance

EdgeOne SpeedTest — Web-based Edge Speed Tester

Browser-native edge network speed test measuring real device-to-edge download throughput, upload throughput, RTT latency, and jitter within 20 seconds.

Application & Engineering Screenshots

1 views
Edge Network Speed Dashboard
Edge Network Speed Dashboard

Technical Specifications & Architecture

EdgeOne SpeedTest —— 部署在边缘节点上的网页测速

打开网页,点一次按钮,约 20 秒后你就知道:你的设备到最近边缘节点之间,真实的下载吞吐、上传吞吐、延迟与抖动是多少。

在线体验:https://speed.satelc.com


一、它是什么

EdgeOne SpeedTest 是一个纯网页的宽带测速工具,运行在腾讯 EdgeOne 的全球边缘节点上。

它和常见的测速网站最大的不同在于:服务端不是一台固定的服务器,而是一段跑在你最近边缘节点上的函数。你打开页面时,页面和测速端点都由离你最近的那个节点直接返回 —— 没有跨省长途回源,没有中心机房带宽瓶颈,测到的就是「你和接入点之间」这条链路的真实能力。

整个项目零依赖、无框架、无构建步骤:原生 HTML + CSS + ES Modules + Canvas,整站静态资源约 120KB。服务端只需要三个极简的 HTTP 端点。


二、核心能力

能力 说明
下行吞吐 多连接并行流式下载,实时曲线 + 均值 + 峰值
上行吞吐 多连接并行上传,以服务端已确认接收的字节计速
空闲延迟 / 抖动 串行多次小包往返取中位数
满载延迟 下载过程中持续打点,量化 bufferbloat(缓冲膨胀)造成的排队时延
自适应并发 自动选择并发数(2–12)与分块大小(128KB–32MB),慢链路与万兆链路都能打满
中英双语 简体中文 / English 一键切换,跟随浏览器语言,也可强制指定
导出报告 一键生成自包含 HTML 报告,可直接打印或另存为 PDF
本地历史 最近 20 次结果保存在浏览器本地,随时回看对比

三、为什么测得准

测速看起来简单,做准很难。常见的误差来源我们都处理了:

  1. 剔除预热窗口 —— 前 600ms 数据直接丢弃。这段里混杂着 TCP 慢启动、连接建立和首个 RTT,留着会把结果拉低。
  2. 峰值取滑动窗口 —— 峰值不是某一瞬间的抖动值,而是 ≥400ms 滑动窗口内的最大值,既稳定又不失真。
  3. 上行按服务端确认字节计 —— 浏览器把数据写进内核 socket 缓冲就算「发出去了」,那会严重虚高。我们以边缘节点实际接收并确认的字节数为准。
  4. 数据不可压缩 —— 下载流是伪随机字节,无法被 gzip/br 压缩,不会出现「测的是压缩比而不是带宽」的经典错误。
  5. 强制不缓存 —— 测速端点返回 no-store,且 CDN 侧不忽略查询字符串,保证每次都是真实传输,不会命中缓存变成「测缓存」。
  6. 自适应打满链路 —— 先用 256KB / 2MB / 16MB 阶梯快速摸清链路量级,再选并发数与分块大小:慢链路少并发小分块避免自拥塞,高速高时延链路多并发打满带宽时延积(BDP)。

额外一点:满载延迟是很多测速工具没有的。它能告诉你「一边下载一边打游戏会不会卡」—— 这正是 bufferbloat 的表现。


四、界面与体验

  • 双语:默认简体中文,跟随浏览器语言首次自动判断;右上角 EN / 中 一键切换,选择会被记住。也可用 ?lang=en / ?lang=zh 强制指定。
  • 响应式:针对桌面(≥1024px)、平板(≤1024px)、手机(≤760px)、窄屏(≤480px)、手机横屏、以及触摸设备分别优化;节点信息自动省略、按钮自适应均分。
  • 深浅色主题:跟随系统偏好,也可手动切换。
  • 无障碍与偏好:尊重 prefers-reduced-motion(减少动效)。
  • 导出报告:生成自包含的 HTML 文件(无任何外部资源、零网络请求),内含结果摘要、节点信息、吞吐曲线快照、完整免责声明与版权,CSS 同时针对屏幕与 A4 打印 / 另存为 PDF 排版(分页、表格不跨页断裂)。

五、架构与部署

                    ┌──────────────────────────────┐
   用户浏览器  ───▶ │  最近的 EdgeOne 边缘节点      │
                    │  ┌────────────────────────┐  │
                    │  │ 边缘函数                │  │
                    │  │  · /  /assets/**  页面  │  │
                    │  │  · /download       下载 │  │
                    │  │  · /upload         上传 │  │
                    │  │  · /ping           延迟 │  │
                    │  └────────────────────────┘  │
                    └──────────────────────────────┘
                          没有源站、没有服务器

零源站部署是这套方案的核心特点:页面、样式、脚本和三个测速端点全部由边缘函数直接返回,全程不回源。这意味着:

  • 没有服务器要运维 —— 不需要 ECS、不需要对象存储、不需要负载均衡;
  • 没有源站故障面 —— 从根上消除了「源站不可达」这类故障(传统 CDN 架构最常见的 5xx 来源之一);
  • 天然就近 —— 用户在哪儿,测速端点就在哪儿;
  • 成本极低 —— 按边缘函数请求数与流量计费,闲置时几乎不花钱。

三个端点都极其简单:

端点 方法 行为
/download?size=<bytes> GET 边缘节点实时生成指定大小的不可压缩数据流(单次上限 256MB)
/upload POST 读取请求体后立即丢弃,返回收到的字节数
/ping GET 返回 JSON:客户端 IP、地理/运营商、边缘节点标识

项目同时保留了另外两种部署形态,可按环境选择:

形态 下行 上行 延迟 适用场景
边缘函数 + 零源站(推荐) ✅ ✅ ✅ 单域名、无服务器,最省事也最稳
边缘函数 + 外部源站 ✅ ✅ ✅ 静态资源已托管在 Pages / COS / 自建服务器
纯静态 CDN ✅ ❌ ✅ 完全不能跑函数时的降级方案(无法测上行)

详细部署步骤见 部署指南.md。


六、隐私与合规

  • 上行测试数据在边缘节点读完即丢弃:不落盘、不记录、不转发任何第三方。
  • 测速结果不上传:历史记录只存在用户自己浏览器的 localStorage 里,清除浏览器数据即消失。
  • 无第三方统计、无广告 SDK、无 Cookie 追踪。
  • 测试会产生真实流量(单次约数十至数百 MB),页面页脚的免责声明对此有明确提示。

七、典型使用场景

  • 运营商/宽带服务商:给装维人员和用户一个自助带宽自查入口,作为投诉预处理的第一道工具。
  • 企业 IT / 网管:分支机构、居家办公、SD-WAN 链路的质量验收与日常巡检。
  • IDC / 云服务商:向客户展示接入链路质量,配合工单排查。
  • 边缘计算 / CDN 选型:对比不同厂商、不同地域 PoP 的实际接入表现。
  • 个人用户:判断「网速慢」到底出在哪一段 —— 是无线信号、是局域网占用,还是运营商链路。

八、快速上手

对使用者:打开 https://speed.satelc.com → 点击「开始测速」→ 约 20 秒后查看结果。需要留档就点「导出报告」。

对部署方:

npm run dev              # 本地起服务,http://127.0.0.1:8787
npm run build:standalone # 生成零源站版边缘函数
npm run check:standalone # 本地验证(不部署就能验证)
npm run check -- https://你的域名   # 上线后端点冒烟
npm run check:i18n       # 双语与导出功能验证
npm run check:browser    # 无头 Chrome 跑完整测速

把 edgeone/edge-function-standalone.js 整段粘贴到 EdgeOne 边缘函数编辑器,触发规则设为 HOST 等于 <你的域名>,保存即可 —— 不需要配源站,不需要改 DNS。


九、常见问题

Q:测出来的速度和运营商说的带宽不一样? A:本工具测的是你的设备到最近边缘节点的链路吞吐,不是运营商承诺的签约带宽,也不等于访问某个具体网站的速度。两者本就不该直接画等号,差异通常来自无线信号、局域网占用、高峰期拥塞或限速策略。

Q:为什么上行普遍比下行低? A:大多数家庭宽带本身就是非对称的(下行远大于上行)。若上行明显低于套餐标称,建议换有线连接、关闭占用上行流量的应用(云同步、P2P、视频通话)后复测。

Q:满载延迟比空闲延迟高很多,正常吗? A:这正是 bufferbloat 的表现 —— 路由器或光猫的队列在满速下载时堆积,导致交互类应用(游戏、语音)变卡。空闲 20ms、满载 200ms+ 是典型症状,可尝试开启路由器的 QoS / SQM。

Q:结果可以存档吗? A:可以。点「导出报告」会下载一份自包含 HTML,可直接查看、打印或存为 PDF,适合作为巡检记录归档。

Q:支持哪些浏览器? A:需要支持 ReadableStream 与 AbortController 的现代浏览器(Chrome / Edge / Firefox / Safari 近几年的版本均可)。


十、技术规格

项目 规格
前端 原生 HTML + CSS + ES Modules + Canvas,零依赖、无构建
整站体积 静态资源约 120KB
默认测试时长 下行 8s / 上行 8s(可在 4–20s 调整)
并发连接 自适应 2–12,也可手动指定
分块大小 自适应 128KB–32MB(上行上限 8MB)
速率单位 自适应 Mbps / MB/s / Gbps
延迟采样 空闲 8 次串行往返;满载每 420ms 打点
历史记录 本地保留 20 条,界面展示最近 12 条
语言 简体中文 / English
许可 MIT

十一、免责声明(摘要)

本工具测得的速率为设备与最近边缘节点之间的链路吞吐,不等同于运营商签约带宽,也不代表访问任意网站或服务的实际体验速度。结果受终端性能、无线信号、局域网占用、运营商策略、代理出口等多种因素影响,仅供参考与自查,不构成服务质量证明、验收依据或法律证据。

测试会产生真实的下行与上行流量(单次可达数十至数百 MB),在按流量计费、漫游或有限流量的网络上请自行评估。本工具按「现状」提供,不保证结果准确、完整或连续可用;不收集、不存储、不共享测速结果。

完整版免责声明与版权声明请见产品页脚,或导出任意一份报告查看。