前端性能优化指标 - DCL(触发时机、脚本对 DCL 的影响、CSS 对 DCL 的影响)

news/2025/1/30 1:30:29/

html" title=前端>前端html" title=性能优化>性能优化指标 DCL

1、概述
  • DCL(DOMContentLoaded)表示浏览器已经完全加载并解析了页面的初始 HTML 文档,同时完成了 DOM 树的构建,但需等待样式表、图片等外部资源的加载
2、触发时机
  1. 当 HTML 文档被完全加载和解析时触发

  2. 此时,DOM 树已经构建完成,但外部资源(例如,样式表、图片、脚本等)可能仍在加载中

  3. 如果页面中有同步的 JavaScript 脚本(未使用 async 或 defer 属性),浏览器会等待这些脚本执行完毕后再触发 DCL

3、影响 DCL 的因素
(1)基本介绍
  1. HTML 文档大小:HTML 文件越大,解析时间越长,DCL 时间越晚

  2. 同步 JavaScript 脚本:同步脚本会阻塞 DOM 解析,延迟 DCL 的触发

  3. 网络延迟:HTML 文件加载时间受网络速度影响,网络越慢,DCL 时间越长

  4. CSS 文件加载:虽然 CSS 不会阻塞 DOM 解析,但会阻塞页面渲染,间接影响 DCL

(2)优化策略
  1. 减少 HTML 文件大小:压缩 HTML 文件,移除不必要的空格、注释和冗余代码

  2. 异步加载 JavaScript:使用 async 或 defer 属性加载脚本,避免阻塞 DOM 解析

  3. 优化网络请求:使用 CDN 加速 HTML 文件的加载,减少网络延迟

  4. 内联关键 CSS:将关键 CSS 直接内联到 HTML 中,减少外部 CSS 文件的阻塞时间


学习补充

1、脚本对 DCL 的影响
  1. 同步脚本:会阻塞 HTML 解析,DCL 需要等待脚本执行完成

  2. 异步脚本(async):不会阻塞 HTML 解析,DCL 不需要等待脚本

  3. 延迟脚本(defer):不会阻塞 HTML 解析,但 DCL 需要等待脚本执行完成

2、脚本分类
  • html" title=前端>前端开发中,script 标签用于加载和执行 JavaScript 代码,根据加载和执行方式的不同,script 标签可以分为同步脚本、异步脚本(async)和延迟脚本(defer)
  1. 同步脚本:当浏览器解析到 script 标签时,会立即停止 HTML 文档的解析,加载并执行脚本文件,脚本执行完毕后才会继续解析HTML文档
  • 特点:阻塞HTML解析多个脚本顺序执行
html"><script src="script1.html" title=js>js"></script>
<script src="script2.html" title=js>js"></script>
  1. 异步脚本(async):使用 async 属性的脚本会在下载完成后立即执行,执行时会阻塞 HTML 解析,异步脚本的下载与 HTML 解析并行进行,但执行时会暂停 HTML 解析
  • 特点:并行加载多个脚本执行顺序不确定
html"><script async src="script1.html" title=js>js"></script>
<script async src="script2.html" title=js>js"></script>
  1. 延迟脚本(defer):使用 defer 属性的脚本会在HTML文档解析完成后,按照它们在文档中出现的顺序依次执行
  • 特点:并行加载多个脚本顺序执行
html"><script defer src="script1.html" title=js>js"></script>
<script defer src="script2.html" title=js>js"></script>
3、CSS 对 DCL 的影响
  1. CSS 不会直接阻塞 DOM 解析,但它可能会间接影响 JavaScript 执行,从而对 DCL 的触发时间产生一定的影响

  2. 例如,如果页面中存在依赖于 CSSOM 的 JavaScript 代码(例如,通过 document.styleSheets 访问样式表),浏览器会等待 CSS 文件加载完成后再执行这些脚本,如果这些脚本是同步加载的,会延迟 DCL 的触发


http://www.ppmy.cn/news/1567766.html

相关文章

SQL进阶实战技巧:如何构建用户行为转移概率矩阵,深入洞察会话内活动流转?

目录 1 场景描述 1.1 用户行为转移概率矩阵概念 1.2 用户行为转移概率矩阵构建方法 &#xff08;1&#xff09; 数据收集 &#xff08;2&#xff09;定义状态 &#xff08;3&#xff09;数据预处理 &#xff08;4&#xff09;会话划分 &#xff08;5&#xff09;构建状态…

HarmonyOS简介:高效开发与测试

ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。 在TypeScript生态的基础上做了进一步拓展&#xff0c;保持了其基本风格&#xff0c;同时通过规范定义&#xff0c;强化开发期静态检查和分析&#xff0c;提升程序执行稳定性和性能。 如图所示代码示例 UI界面会显示一段…

利用ue5制作CG动画笔记

tips&#xff1a; 按住鼠标中键可以拖动枢轴点 在曲线编辑器中按住shift可以使曲线编辑保持在x轴 专业术语&#xff1a; CGI&#xff1a;计算机生成图象&#xff08;computer-generated imagery&#xff09;真实的不算&#xff0c;计算机生成的 Compositing&#xff1a;合…

代码随想录算法【Day34】

Day34 62.不同路径 思路 第一种&#xff1a;深搜 -> 超时 第二种&#xff1a;动态规划 第三种&#xff1a;数论 动态规划代码如下&#xff1a; class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n,…

http3网站的设置(AI不会配,得人工配)

堡塔PHP项目中配置nginx1.26.0设置http3协议 # 文件所在服务器中的路径 /www/server/nginx/conf/nginx.confuser www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log crit; pid /www/server/nginx/logs/nginx.pid; worker_rlimit_nofile 512…

Hive详细讲解-调优分区表速通

文章目录 1.分区表和分桶表1分区表2.二级分区3.动态分区4.动态分区测试 2.分桶表1.基本语法2.分桶表导入数据3.分桶排序表 3.文件格式压缩4.hive文件格式4.1 text file&#xff08;默认文件格式&#xff09;4.2 orc文件 &#xff08;常用&#xff09;4.3 orc存储使用列存储&…

【数据分析】基础篇

不定期更新&#xff0c;建议关注、收藏、点赞&#xff01; 流程 明确目标 业务流程数据监控描述、市场宏观环境分析、竞品分析、数据探索挖掘获取数据 来源&#xff1a;数据库和日志、埋点需求前端埋点特殊数据、业务人员Excel表格、爬虫采集数据、公开数据集、商业平台导出的…

DeepseekMath:超强开源数学模型(论文详解)

摘要 近日&#xff0c;中国团队Deepseek推出了一款名为DeepSeekMath的7B开源数学模型&#xff0c;这个模型在数学方面的表现令人惊叹。DeepSeekMath 7 B在不依赖外部工具包和投票技术的情况下&#xff0c;在竞赛级MATH基准测试中获得了51.7%的分数&#xff0c;接近Gemini-Ultr…