一般情况下我们用一些默认函数可以简单测量一下页面载入性能,如果要深入那么需要更专业的方案。
nav = page.evaluate("() => performance.getEntriesByType('navigation')[0]")
print("DNS:", nav["domainLookupEnd"] - nav["domainLookupStart"],
"TCP:", nav["connectEnd"] - nav["connectStart"],
"TTFB:", nav["responseStart"] - nav["fetchStart"],
"DOMContentLoaded:", nav["domContentLoadedEventEnd"] - nav["fetchStart"],
"onLoad:", nav["loadEventEnd"] - nav["fetchStart"])
打印的结果
DNS: 0.0
TCP: 0.5
TTFB: 7.599999964237213
DOMContentLoaded: 846.0999999642372
onLoad: 942.5999999642372
解析
DNS
域名解析耗时。值为 0 说明浏览器复用了近期(或系统级)DNS 缓存,根本不用再查一次,属于理想情况。
一般 >50 ms 就要考虑 DNS 服务商或 TTL 设置。
TCP: 0.5
与服务器建立 TCP 连接(含 TLS 握手如果是 https)所花的时间。
0.5 ms 表示本机到服务器网络非常近(同机房或边缘节点)。
正常互联网环境 20-100 ms;超过 200 ms 通常意味着跨洲链路或丢包重传。
TTFB: 7.6 ms
Time to First Byte —— 从「发起请求」到「收到第一个字节」的间隔。
包含:排队 + 服务器处理 + 回传网络。
7.6 ms 属于极优(静态资源或 CDN 边缘缓存)。
参考线:
<100 ms 优秀
100-300 ms 可接受
500 ms 用户就能感觉“顿一下”,需要优化后端或缓存。
DOMContentLoaded: 846 ms
从导航开始到浏览器触发 DOMContentLoaded 事件的时间。
含义:初始 HTML 下载并解析完成,DOM 树构建完毕;不等待图片、CSS、异步 JS。
参考线:
<500 ms 体验流畅
500-1500 ms 中等
1.5 s 就会出现“白屏”感知,需要压缩/拆分/服务端渲染等手段。
onLoad: 943 ms
从导航开始到 window.onload 触发的时间。
含义:DOM + 所有同步 JS、CSS、图片等依赖资源全部下载并执行完毕。
参考线:
<1 s 优秀
1-3 s 正常
3 s 用户流失率明显上升。
综合判断这条记录:
网络层(DNS/TCP/TTFB)极快,说明资源就在本地或 CDN 边缘。
DOM 构建到 846 ms,onLoad 到 943 ms,差距仅 ~100 ms,说明页面依赖的静态文件很少或体积很小,属于「轻量级首页」的优秀水平。