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

如何计算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 进行优化验证。

相关文章:

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

计算 H5 页面加载时的 白屏时间&#xff08;First Paint Time&#xff09;是前端性能优化的重要指标&#xff0c;通常指从用户发起页面请求到浏览器首次渲染像素&#xff08;如背景色、文字等&#xff09;的时间。以下是几种常用的计算方法&#xff1a; 1. 使用 Performance AP…...

SpringAI系列 - MCP篇(三) - MCP Client Boot Starter

目录 一、Spring AI Mcp集成二、Spring AI MCP Client Stater三、spring-ai-starter-mcp-client-webflux集成示例3.1 maven依赖3.2 配置说明3.3 集成Tools四、通过SSE连接MCP Server五、通过STDIO连接MCP Server六、通过JSON文件配置STDIO连接一、Spring AI Mcp集成 Spring AI…...

【深度学习新浪潮】以Dify为例的大模型平台的对比分析

我们从核心功能、适用群体、易用性、可扩展性和安全性五个维度展开对比分析: 一、核心功能对比 平台核心功能多模型支持插件与工具链Dify低代码开发、RAG增强、Agent自律执行、企业级安全支持GPT-4/5、Claude、Llama3、Gemini及开源模型(如Qwen-VL-72B),支持混合模型组合可…...

Asp.net core 使用EntityFrame Work

安装以下Nuget 包 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer或者Npgsql.EntityFrameworkCore.PostgreSQL 安装完上述Nuget包之后,在appset…...

isp中的 ISO代表什么意思

isp中的 ISO代表什么意思 在摄影和图像信号处理&#xff08;ISP&#xff0c;Image Signal Processor&#xff09;领域&#xff0c;ISO是一个用于衡量相机图像传感器对光线敏感度的标准参数。它最初源于胶片摄影时代的 “国际标准化组织&#xff08;International Organization …...

AI Coding 资讯 2025-06-03

Prompt工程 RAG-MCP&#xff1a;突破大模型工具调用瓶颈&#xff0c;告别Prompt膨胀 大语言模型(LLM)在工具调用时面临Prompt膨胀和决策过载两大核心挑战。RAG-MCP创新性地引入检索增强生成技术&#xff0c;通过外部工具向量索引和动态检索机制&#xff0c;仅将最相关的工具信…...

2024年12月 C/C++(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:最近的斐波那契数 斐波那契数列 Fn 的定义为:对 n ≥ 0 有 Fn+2 = Fn+1 + Fn,初始值为 F0 = 0 和 F1 = 1。所谓与给定的整数 N 最近的斐波那契数是指与 N 的差之绝对值最小的斐波那契数。 本题就请你为任意给定的整数 N 找出与之最…...

3d GIS数据来源与编辑工具

1、卫星遥感 2、航空摄影测量 3、地面实测技术 全站仪 3维扫描 3D GIS数据制作全流程详解 一、数据采集&#xff1a;多源数据获取 3D GIS数据的制作需从多维度采集地理空间信息&#xff0c;以下是主要采集方式及适用场景&#xff1a; &#xff08;一&#xff09;遥感与航测…...

NeRF PyTorch 源码解读 - 体渲染

文章目录 1. 体渲染公式推导1.1. T ( t ) T(t) T(t) 的推导1.2. C ( r ) C(r) C(r) 的推导 2. 体渲染公式离散化3. 代码解读 1. 体渲染公式推导 如下图所示&#xff0c;渲染图像上点 P P P 的颜色值 c c c 是累加射线 O P → \overrightarrow{OP} OP 在近平面和远平面范围…...

SpringBoot 数据库批量导入导出 Xlsx文件的导入与导出 全量导出 数据库导出表格 数据处理 外部数据

介绍 poi-ooxml 是 Apache POI 项目中的一个库&#xff0c;专门用于处理 Microsoft Office 2007 及以后版本的文件&#xff0c;特别是 Excel 文件&#xff08;.xlsx 格式&#xff09;和 Word 文件&#xff08;.docx 格式&#xff09;。 在管理系统中需要对数据库的数据进行导…...

解决:install via Git URL失败的问题

为解决install via Git URL失败的问题&#xff0c;修改安全等级security_level的config.ini文件&#xff0c;路径如下&#xff1a; 还要重启&#xff1a; 1.reset 2.F5刷新页面 3.关机服务器&#xff0c;再开机&#xff08;你也可以省略&#xff0c;试试&#xff09; 4.Wind…...

OpenCV CUDA模块特征检测------创建Harris角点检测器的GPU实现接口cv::cuda::createHarrisCorner

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数创建一个 基于 Harris 算法的角点响应计算对象&#xff0c;专门用于在 GPU 上进行高效计算。 它返回的是一个 cv::Ptrcv::cuda::Cornernes…...

【氮化镓】钝化层对p-GaN HEMT阈值电压的影响

2021年5月13日,中国台湾阳明交通大学的Shun-Wei Tang等人在《Microelectronics Reliability》期刊发表了题为《Investigation of the passivation-induced VTH shift in p-GaN HEMTs with Au-free gate-first process》的文章。该研究基于二次离子质谱(SIMS)、光致发光(PL)…...

C++:优先级队列

目录 1. 概念 2. 特征 3. 优先级队列的使用 1. 概念 优先级队列虽然名字有队列二字&#xff0c;但根据队列特性来说优先级队列不满足先进先出这个特征&#xff0c;优先级队列的底层是用堆来实现的。 优先级队列是一种容器适配器&#xff0c;就是将特定容器类封装作为其底层…...

睡眠分期 html

截图 代码 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>睡眠图表</title><script src…...

Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析

Java求职者面试&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术深度解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释什么是Spring框架&#xff1f;它的核心功能是什么&#xff1f; JY&#xff1a;Spring是一个开源的Java/Java EE企业级应用开…...

Github 2025-05-29 Go开源项目日报Top9

根据Github Trendings的统计,今日(2025-05-29统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目9Assembly项目1Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:27…...

前端项目种对某个文件夹进行大小写更改,git识别不到差异导致无变化

问题背景 开发过程中可能遇到一个文件名要更改大小写&#xff0c;但是更改后之后本地会有变化&#xff0c;但是git识别不到差异化&#xff0c;正常去更改一个文件名称git差异化会出现删除了原有文件,新增了一个新文件,但是更改大小写则不会 如何解决 在终端中输入git config…...

AWS VPC 网络详解:理解云上专属内网的关键要素

全面解读 AWS VPC、子网、安全组、路由与 NAT 网关的实际应用 在使用 AWS 云服务的过程中&#xff0c;许多用户最先接触的是 EC2&#xff08;云服务器&#xff09;。但你是否曾遇到过这样的情况&#xff1a;实例启动正常&#xff0c;却无法访问公网&#xff1f;或者数据库无法…...

Ubuntu24.04.2 + kubectl1.33.1 + containerdv1.7.27 + calicov3.30.0

Ubuntu24.04.2 kubectl1.33.1 containerdv1.7.27 calicov3.30.0 安装Ubuntu24.04.2 kubectl1.33.1 containerdv1.7.27 calicov3.30.0 1.安装Ubuntu24.04.2&#xff0c;设置阿里云镜像地址 $ sudo vim /etc/apt/sources.list.d/ubuntu.sources URIs: https://mirrors.aliy…...

循环神经网络(RNN)全面教程:从原理到实践

循环神经网络(RNN)全面教程&#xff1a;从原理到实践 引言 循环神经网络(Recurrent Neural Network, RNN)是处理序列数据的经典神经网络架构&#xff0c;在自然语言处理、语音识别、时间序列预测等领域有着广泛应用。本文将系统介绍RNN的核心概念、常见变体、实现方法以及实际…...

uniapp 键盘顶起页面问题

关于uniapp中键盘顶起页面的问题。这是一个在移动应用开发中常见的问题&#xff0c;特别是当输入框位于页面底部时&#xff0c;键盘弹出会顶起整个页面&#xff0c;导致页面布局错乱。 pages.json 文件内&#xff0c;在需要处理软键盘的页面添加 softinputMode 配置&#xff1…...

利用TOA与最小二乘法直接求解

为了利用到达时间&#xff08;TOA&#xff09;和最小二乘法直接求解&#xff0c;我们首先需要理解TOA定位的基本原理和最小二乘法的应用。 步骤1: 理解TOA定位原理 到达时间&#xff08;TOA&#xff09;定位是通过测量信号从发射源到达接收器的时间来确定位置的一种方法。假设…...

SpringBoot系列之RabbitMQ 实现订单超时未支付自动关闭功能

系列博客专栏&#xff1a; JVM系列博客专栏SpringBoot系列博客 RabbitMQ 实现订单超时自动关闭功能&#xff1a;从原理到实践的全流程解析 一、业务场景与技术选型 在电商系统中&#xff0c;订单超时未支付自动关闭功能是保障库存准确性、提升用户体验的核心机制。传统定时任…...

【C++高级主题】命令空间(五):类、命名空间和作用域

目录 一、实参相关的查找&#xff08;ADL&#xff09;&#xff1a;函数调用的 “智能搜索” 1.1 ADL 的核心规则 1.2 ADL 的触发条件 1.3 ADL 的典型应用场景 1.4 ADL 的潜在风险与规避 二、隐式友元声明&#xff1a;类与命名空间的 “私密通道” 2.1 友元声明的基本规则…...

ArcGIS Pro 3.4 二次开发 - 地图创作 1

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 ArcGIS Pro 3.4 二次开发 - 地图创作 11 样式管理1.1 如何通过名称获取项目中的样式1.2 如何创建新样式1.3 如何向项目添加样式1.4 如何从项目中移除样式1.5 如何向样式添加样式项1.6 如何从样式中移除样式项1.7 如何判断样式是否可…...

2.1HarmonyOS NEXT开发工具链进阶:DevEco Studio深度实践

HarmonyOS NEXT开发工具链进阶&#xff1a;DevEco Studio深度实践 在HarmonyOS NEXT全栈自研的技术体系下&#xff0c;DevEco Studio作为一站式开发平台&#xff0c;通过深度整合分布式开发能力&#xff0c;为开发者提供了从代码编写到多端部署的全流程支持。本章节将围绕多设…...

MyBatis常用注解全解析:从基础CRUD到高级映射

MyBatis常用注解全解析&#xff1a;从基础CRUD到高级映射 本文全面解析MyBatis核心注解体系&#xff0c;涵盖基础操作、动态SQL、关系映射等高级特性&#xff0c;助你彻底掌握MyBatis注解开发精髓 一、MyBatis注解概述 1.1 注解 vs XML配置 MyBatis同时支持XML配置和注解两种…...

国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案

一、方案背景​ 文物作为人类文明的珍贵载体&#xff0c;具有不可再生性。当前&#xff0c;盗窃破坏、游客不文明行为及自然侵蚀威胁文物安全&#xff0c;传统保护手段存在响应滞后、覆盖不全等局限。随着5G与信息技术发展&#xff0c;基于GB28181协议的EasyGBS视频云平台&…...

十二、【核心功能篇】测试用例列表与搜索:高效展示和查找海量用例

【核心功能篇】测试用例列表与搜索:高效展示和查找海量用例 前言准备工作第一步:更新 API 服务以支持分页和更完善的搜索第二步:创建测试用例列表页面组件 (`src/views/testcase/TestCaseListView.vue`)第三步:测试列表、搜索、筛选和分页总结前言 当测试用例数量逐渐增多…...