playwright中查看页面载入性能指标参数

45 阅读2分钟

一般情况下我们用一些默认函数可以简单测量一下页面载入性能,如果要深入那么需要更专业的方案。

            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,说明页面依赖的静态文件很少或体积很小,属于「轻量级首页」的优秀水平。