当前位置: 首页 > news >正文

如何计算H5页面加载时的白屏时间

计算 H5 页面加载时的 白屏时间(First Paint Time)是前端性能优化的重要指标,通常指从用户发起页面请求到浏览器首次渲染像素(如背景色、文字等)的时间。以下是几种常用的计算方法:


1. 使用 Performance API(推荐)

现代浏览器提供的 Performance API 可以精确获取页面加载的关键时间点:

// 计算白屏时间(First Paint)
const whiteScreenTime = performance.timing.responseEnd - performance.timing.navigationStart;// 或者使用更精确的 PerformancePaintTiming(需浏览器支持)
performance.getEntriesByType('paint').forEach((entry) => {if (entry.name === 'first-paint') {console.log('白屏时间(First Paint):', entry.startTime, 'ms');}
});

关键指标:

  • navigationStart:页面开始导航的时间。
  • responseEnd:浏览器接收到最后一个字节的时间。
  • first-paint(PerformancePaintTiming):浏览器首次渲染非空白内容的时间。

2. 使用 MutationObserver 监听 DOM 变化

如果目标浏览器不支持 Performance API,可以通过监听 DOM 变化来估算白屏时间:

document.addEventListener('DOMContentLoaded', () => {const startTime = Date.now();const observer = new MutationObserver(() => {// 当检测到 DOM 变化时,认为页面开始渲染const whiteScreenTime = Date.now() - startTime;console.log('估算白屏时间:', whiteScreenTime, 'ms');observer.disconnect(); // 停止监听});observer.observe(document, { childList: true, subtree: true });
});

适用场景:
兼容性较好,但精度较低(受 JS 执行影响)。


3. 使用 Chrome DevTools 手动测量

  1. 打开 Chrome 开发者工具(F12)。
  2. 切换到 Performance 面板。
  3. 点击 Reload 按钮录制页面加载过程。
  4. 在结果中查找 First PaintFP 时间。

4. 使用 Lighthouse 自动化测试

运行 Lighthouse(Chrome 内置工具)生成性能报告:

# 命令行方式(需安装 Lighthouse)
lighthouse https://example.com --view --output=json --output-path=./report.json

报告中的 First Contentful Paint (FCP) 近似白屏时间。


关键优化建议

  1. 减少关键资源(CSS/JS)体积:压缩、异步加载非必要脚本。
  2. 内联关键 CSS:避免渲染阻塞。
  3. 预加载关键资源:使用 <link rel="preload">
  4. 服务端渲染(SSR):加快首屏渲染。

总结

方法适用场景精度
Performance API现代浏览器⭐⭐⭐⭐⭐
MutationObserver兼容旧浏览器⭐⭐
Chrome DevTools手动调试⭐⭐⭐
Lighthouse自动化测试⭐⭐⭐⭐

推荐优先使用 Performance API,并结合 Lighthouse 进行优化验证。

相关文章:

  • 如何进行页面前端监控
  • window 显示驱动开发-DirectX 视频加速 2.0
  • 如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • 资源-又在网上淘到金了-配乐下载
  • 8.RV1126-OPENCV 视频中添加LOGO
  • 实现对deepseek流式返回的json数据,进行逐字解析并实时渲染
  • Python中os模块详解
  • 蓝桥杯 k倍区间
  • [蓝桥杯]生物芯片
  • 负载均衡相关基本概念
  • 通过阿里云 DashScope API 调用通义千问
  • [蓝桥杯]求解台阶问题
  • Redis 缓存问题及其解决方案
  • DrissionPage 异常处理实战指南:构建稳健的网页自动化防线
  • Eureka 高可用集群搭建实战:服务注册与发现的底层原理与避坑指南
  • n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)
  • (13)java+ selenium->元素定位大法之By_partial_link_text
  • 04 APP 自动化- Appium toast 元素定位列表滑动
  • 内网横向之RDP缓存利用
  • Redis 缓存粒度如何控制?缓存整个对象还是部分字段?
  • 雁塔区住房和城乡建设局网站/重庆整站seo
  • 广东 政府网站 建设发展规划/网络整合营销
  • 搬瓦工服务器用来做网站/手机网站模板
  • 全平台响应式网站建设/推广一般收多少钱
  • wordpress文件上传/武汉seo服务
  • 广东网站建设公司哪家便宜/网上推广app怎么做