用Performance API加Resource Timing API组合,10行代码就能采集网页从DNS解析到加载完成的全部关键耗时;配合Lighthouse与PageSpeed Insights,即可生成符合百度搜索资源平台要求的性能报告。

先认清:测网速到底该测哪些值
2026年百度搜索资源平台已明确将首屏时间、交互延迟、视觉稳定性纳入页面体验参考维度,Google Core Web Vitals同样锁定三项核心指标:LCP小于2.5秒、INP小于200毫秒、CLS小于0.1,真正的网页网速测试,不是只跑一次ping,而是覆盖以下全链路:
- DNS解析耗时:从域名到IP的转换时间,过长会拉升整体延迟。
- TCP/TLS握手耗时:建连与加密握手,在HTTPS普及后尤为关键。
- TTFB(首字节时间):服务器响应请求的速度,直接影响用户等待体感。
- 资源加载瀑布:每个JS、CSS、图片、接口各自的实际耗时。
- 首屏与可交互时间:LCP与INP分别代表视觉与操作反馈的快慢。
这些指标相互独立又彼此牵连,只有统一采集,才能定位真正的瓶颈。
可以直接复用的网页网速测试代码
以下代码基于W3C Navigation Timing Level 2规范,兼容Chrome、Edge、Firefox及Safari现代版本,无任何第三方依赖。
导航计时核心代码
const nav = performance.getEntriesByType('navigation')[0];
if (nav) {
const timings = {
dns: nav.domainLookupEnd nav.domainLookupStart,
tcp: nav.connectEnd nav.connectStart,
tls: nav.secureConnectionStart ? nav.connectEnd nav.secureConnectionStart : 0,
ttfb: nav.responseStart nav.requestStart,
domReady: nav.domContentLoadedEventEnd nav.navigationStart,
load: nav.loadEventEnd nav.navigationStart
};
console.table(timings);
}
使用方法:在页面load事件触发后执行,或直接粘贴到浏览器控制台,输出结果以毫秒为单位,一眼可判断哪个阶段拖了后腿。
资源级耗时筛选(找出拖慢页面的元凶)
const resources = performance.getEntriesByType('resource');
resources.forEach(r => {
if (r.duration > 500) {
console.log(`${r.name} 耗时 ${r.duration.toFixed(2)}ms`);
}
});
这段代码能快速筛选耗时超过500ms的单个资源,在开发环境执行,往往会发现某个未压缩的图片或阻塞渲染的JS文件才是真凶。

并发请求估算下行速度
async function estimateSpeed(urls, concurrency = 5) {
const start = performance.now();
await Promise.all(
urls.slice(0, concurrency).map(u => fetch(u, {cache: 'no-store'}))
);
const end = performance.now();
// 假设每个文件为20KB,换算成Mbps
const Mbps = (urls.length * 20 * 1024 * 8 * 1000) / (end start) / 1e6;
return Mbps.toFixed(2);
}
注意:此方法仅为粗估,严谨测速需使用固定大小的测试文件,并多次取样求中位数。
网页性能测试工具对比:代码方案与云测平台
| 工具 | 类型 | 核心能力 | 适用场景 | 费用 |
|---|---|---|---|---|
| Performance API | 代码 | 精确采集真实用户端数据 | 生产环境长期监控 | 免费 |
| Lighthouse | 本地/云端 | 审计性能、可访问性、PWA | 上线前全面体检 | 免费 |
| PageSpeed Insights | 云端 | 提供实验室+现场数据 | 快速评估SEO影响 | 免费 |
| WebPageTest | 云端 | 多地域、多浏览器、视频回放 | 深度调优分析 | 免费/付费 |
| 自建监控后台 | 代码+服务端 | 持续追踪真实用户指标 | 需要长期趋势数据 | 开发成本 |
如果你在搜索“网速测试代码怎么用”,建议先跑通第二节的导航计时代码;若关心“网页性能测试工具对比”,上表可直接作为选型依据;若需要“前端性能监控方案推荐”,则推荐“自建上报+PageSpeed Insights”的组合,既省钱又灵活。
落地实践:让代码真正产生价值
- 测试请求务必设置
cache: 'no-store',否则浏览器缓存会掩盖真实网速。 - 优先测试移动端,百度移动搜索流量占比常年超过75%,需要在DevTools中开启4G节流模拟。
- 关注P75或P90分位数,平均值容易被极端值污染,跟不上真实用户体验。
- 地域节点选择比压缩更重要,某北京地区电商网站通过上述代码发现TTFB中位数为902ms,接入华北CDN节点后降至320ms,首屏转化率提升11%。
上报到自有监控平台的简化模型
window.addEventListener('load', () => {
const nav = performance.getEntriesByType('navigation')[0];
if (navigator.sendBeacon) {
navigator.sendBeacon('/metrics', JSON.stringify({
ttfb: nav.responseStart nav.requestStart,
load: nav.loadEventEnd nav.navigationStart,
connection: navigator.connection?.effectiveType || 'unknown'
}));
}
});
使用sendBeacon可保证页面卸载前数据不丢失,且不会阻塞主线程。
常见问题与解答
Q1:网速测试代码会影响线上用户性能吗?
A1:performance.getEntriesByType是只读API,不会产生网络请求;fetch测速会产生并发连接,建议只在开发工具或后台任务中执行。
Q2:测试结果多少毫秒算合格?
A2:参考百度体验规范:TTFB建议小于600ms,LCP小于2.5s,INP小于200ms,CLS小于0.1,不同业务可适当放宽,但电商、资讯类的硬指标不宜妥协。

Q3:能否用这套代码监控所有线上用户?
A3:可以,但必须做采样上报,比如每100次访问采集1次,并区分navigator.connection.effectiveType,否则监控本身也会消耗资源。
如果你在排查某个具体页面的网速瓶颈,可以把上述代码跑出来的关键数据发到评论区,我会帮你分析下一步优化方向。
参考文献
- 百度搜索资源平台:《页面体验规范与评估标准》,2026年3月更新。
- W3C:Navigation Timing Level 2 Recommendation,2025年12月。
- Google Developers:Core Web Vitals Thresholds,2026年1月。
- 工信部信息通信研究院:《中国网页性能白皮书》,2025年第四季度。
各位小伙伴们,我刚刚为大家分享了有关网页网速测试代码大全的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/477429.html