性能指标前言:`DOMContentLoaded`和`load`

前言:DOMContentLoadedload

最初,评价前端页面加载性能有两个指标:DOMContentLoadedload事件,分别代表 DOM 树构造完成和首屏资源加载完成。

DOM 文档加载步骤:

  1. 解析 html 结构
  2. 加载外部脚本和样式表文件
  3. 解析并执行脚本代码
  4. 构造 HTML DOM 模型 (DOMContentLoaded 执行点)
  5. 加载图片等外部文件
  6. 页面加载完毕 (触发load

loadDOMContentLoaded 的不同,load 是在第六步完成之后执行,而 DOMContentLoaded 是在第四步完成之后执行。很明显 DOMContentLoaded 的执行是在 load 之前的。

HTML 被完全加载以及解析时,DOMContentLoaded 事件会被触发,不需要等待 cssimgiframe 加载完。

当整个页面及所有导入资源(比如样式表和图片)都已加载解析完成时,才会触发 load 事件。

我们来看不同 html 的 performance 截图:

  1. cssimgiframe,只有简单的一个 div 标签的:
    请添加图片描述

load 事件(上图的 L)是在 DOMContentLoaded(上图的 DCL)事件触发之后触发的。

  1. 存在多个 img 标签的情况:
    请添加图片描述

可以看到 DOMContentLoaded 事件还是最先执行,而 load 事件需要等待图片加载完才触发。

对于之前的页面和现代的服务端渲染(SSR,Server-Side-Render)的页面,这两个指标都可以很好地衡量首屏内容展示时间。

但对于现代复杂的单页应用,它们都是通过 JS 操作 DOM 向页面添加主要内容,对于这种场景,DOMContentLoadedload 事件就不能很好地衡量首屏显示时间了。

比如我们有 render.jsrender2.js 两个文件,里边通过 js 生成了 img 标签,来看此时 DOMContentLoaded 的触发时机:

请添加图片描述

可以看到 DOMContentLoaded 事件的触发并非只针对与 html 的加载,而是需要等到导入的 js 中关于 dom 操作的部分全部执行完才会触发(因为导入的 js 资源可能存在 DOM 操作,浏览器需要等待 js 资源下载、解析完才会继续解析剩下的 HTML,生成 DOM 树)。

而页面的首次渲染可能在等待 js 资源下载的时候就已经完成(可以查看 关键路径渲染文章了解更多),那么此时使用 DOMContentLoad 或者 load 计算出来的时间就并非是页面实际的渲染时间了。

于是有了 FPFCPFMP 等概念被提出来,它们关注的不是 “加载”,而是 “渲染”,因此能更好地表现用户看到的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/432349.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活英语口语柯桥学英语“再确认一下“ 说成 “double confirm“?这是错误的!

在追求英语表达的过程中,我们常常会遇到一些看似合理实则错误的表达习惯。今天,我们就来聊聊一个常见的误区——“再确认一下”被误译为“double confirm”。 “再次确认”不是double confirm 首先,我们需要明确,“double confi…

线性基定义性质及例题

线性基的定义 以上是官方给出的线性基的定义,但是需要一定的线性代数的基础,其实线性基很好理解,我们用下面一个例子去讲解 假设有3个数,1,2,3,我们这三个数互相异或总共有八种可能,我们能否找到一组数去…

HelpLook VS GitBook,在线文档管理工具对比

在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协…

探索GPU算力在大模型和高性能计算中的无限潜能

在当今科技领域,大模型和高性能计算正以惊人的速度发展。大模型如语言模型、图像识别模型等,规模越来越大,精度越来越高,能够处理复杂的任务和生成逼真的结果。高性能计算则凭借强大的计算能力,推动着科学研究、工程设…

PMP与CMMI:两种管理方法的对比

PMP与CMMI:两种管理方法的对比 PMP:专注于项目管理CMMI:组织过程改进的框架总结:互补而非替代 在现代企业管理中,项目管理和组织能力成熟度模型集成(CMMI)是两个经常被提及的概念。虽然它们都是…

Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化时…

Clion使用vcpkg管理C/C++包

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Clion安装vcpkg二、使用步骤1.切换到清单模式2.开始安装包 三、测试代码总结 前言 Linux上的库基本都可以通过apt或yum等包管理工具来在线安装包&#xff…

力扣 简单 876.链表的中间结点

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a; class Solution {public ListNode middleNode(ListNode head) {ListNode cur head;int n 0;while (cur ! null) {n;cur cur.next;}ListNode curr head;for (int i 0; i < n / 2; i) {curr curr.next;}return …

Unity对象池的高级写法 (Plus优化版)

唐老师关于对物体分类的OOD的写法确实十分好&#xff0c;代码也耦合度也低&#xff0c;但是我有个简单的写法同样能实现一样的效果&#xff0c;所以我就充分发挥了一下主观能动性 相较于基本功能&#xff0c;这一版做出了如下改动 1.限制了对象池最大数量&#xff0c;多出来的…

【hot100-java】【括号生成】

R9-回溯篇 枚举填左括号 class Solution {private int n;private char[] path;private final List<String> retnew ArrayList<>();public List<String> generateParenthesis(int n) {this.nn;//所有括号长度都是n*2pathnew char [n*2];dfs(0,0);return ret;…

求10 个整数中最大值

我们需要10个整数之中求出10个整数之中的最大值所以我们先要将10个整数先放置到一个容器之中&#xff0c;我们初期就使用数组的形式存放10个数组即设置数组arr[10]&#xff0c;我们要将10个数组之中的数字输出出来&#xff0c;我们这里使用的是遍历循环输出数组。我们这里是使用…

Redis 字符串类型的典型应用场景

目录 1. 缓存功能 2. 计数功能 3. 共享会话&#xff08;Session&#xff09; 4. 手机验证码 前言 这里将详细介绍 Redis 字符串类型在实际开发中的几个典型应用场景&#xff0c;并提供相应的伪代码示例。 1. 缓存功能 场景描述 在许多Web应用中&#xff0c;数据通常需要…

这6个aigc软件,性价比之王

随着人工智能技术的迅猛发展&#xff0c;越来越多的应用程序开始集成AIGC&#xff08;人工智能生成内容&#xff09;功能&#xff0c;提升用户体验。本文将介绍六款实用的AIGC软件下载&#xff0c;帮助您在各个领域提高工作效率&#xff0c;释放创造力。 1、即时 AI 作为国内…

Acwing Floyd算法

Acwing Floyd算法 Floyd-Warshall 算法&#xff0c;用于解决图中任意两点之间的最短路径问题。Floyd-Warshall 是一种 多源最短路径算法&#xff0c;可以处理带正权或负权的边&#xff0c;但要求图中不能有负权回路。 通过三层循环对每个顶点作为中转点 k 进行更新。通过检查…

企业为什么要上项目管理系统?项目管理的六大核心要素

随着企业规模的不断扩大和项目数量的增多&#xff0c;传统的手工管理方式已经无法满足企业在项目管理方面的需求。项目管理系统能够帮助企业实现项目信息的集中管理&#xff0c;将所有相关的项目信息&#xff08;如任务、进度、预算、人员等&#xff09;集中存储在一个平台上&a…

【STM32】 TCP/IP通信协议(1)

一、前言 TCP/IP是干啥的&#xff1f;它跟SPI、IIC、CAN有什么区别&#xff1f;它如何实现stm32的通讯&#xff1f;如何去配置&#xff1f;为了搞懂这些问题&#xff0c;查询资料可解决如下疑问&#xff1a; 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …

中国式报表制作困难?!那是因为你没选对报表工具!

一、报表工具介绍 在信息化时代&#xff0c;数据是企业决策的核心驱动力。报表工具作为数据处理与分析的重要手段&#xff0c;广泛应用于财务、销售、运营等各个领域&#xff0c;成为企业洞察市场、优化管理、提升效率的关键工具。传统上&#xff0c;报表制作依赖于复杂的编程…

AWS注册时常见错误处理

引言 创建AWS账号是使用AWS云服务的第一步&#xff0c;但在注册过程中可能会遇到一些常见的问题。本文中九河云将帮助您排查和解决在创建AWS账户时可能遇到的一些常见问题&#xff0c;包括未接到验证电话、最大失败尝试次数错误以及账户激活延迟等。 常见问题及解决方法 1. …

tensorflow底层架构

tensorflow底层架构 架构图 Training libraries 和 Inference libs&#xff08;训练库和推理库&#xff09; Training libraries&#xff1a;用于模型的训练过程&#xff0c;包括定义模型、计算梯度、更新模型权重等。这些库提供了在训练过程中所需的所有功能。Inference lib…