JavaScript 脚本下载解释执行阻塞页面优化

JavaScript中阻塞线程的时间 在JavaScript中,长时间的计算操作、网络请求和复杂的DOM操作等都可能导致线程阻塞,降低页面的响应性能。这样可以将耗时的操作拆分为多个小的任务,在任务之间释放线程,保持页面的响应。在JavaScript中,阻塞线程是指当执行某些耗时操作时,当前线程被阻塞,无法执行其他任务。通过使用定时器和Web Worker等技术,可以在JavaScript中实现异步非阻塞的操作,避免线程的阻塞,提升页面的响应性能。长时间的DOM操作:某些DOM操作,特别是当操作大量元素或执行复杂的操作时,可能会导致线程阻塞。 阅读详情

优化原因:在前端页面加载过程中,JavaScript代码的下载、解释和执行会阻塞页面的其他执行(此时页面会一片空白),浏览器在遇到<body>标签才开始呈现内容。

优化建议:

1、把JavaScript引用放在<body>元素中内容的后面:

<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
</head>
<body>
<!-- 这里放内容 -->
<script type="text/javascript" src="example1.js"></script>
<script type="text/javascript" src="example2.js"></script>
</body>
</html>

2、使用defer属性(只适合引用外部脚本文件,不能保证按顺序执行脚本,建议只有一个脚本引用使用defer属性),延迟脚本,js脚本会被延迟到整个页面都解释完毕后(浏览器遇到</html>标签后)再运行:

<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" defer="defer" src="example1.js"></script>
<script type="text/javascript" defer="defer" src="example2.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>

3、使用async属性(只适合引用外部脚本文件,不能保证按顺序执行脚本,请确保脚本之间不含依赖),异步脚本,异步脚本一定会在页面的load事件前执行:

<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>

注意:使用defer属性引入的脚本会比使用async属性引入的脚本先执行。



延时加载JS,解决JS阻塞问题 延时加载JS和CSS文件来实现按需加载,以保证在页面刚刚开始呈现的时候提高速度,提高用户体验 立即下载

相关推荐

从零到一:Quartus II连接开发板实战,打通绘图、管脚分配、编译与下载全链路

本文详细介绍了使用Quartus II软件连接FPGA开发板并完成首个项目的全流程。从硬件连接到驱动安装,到绘制电路框图、精准分配管脚,再到编译设置与最终下载,手把手指导您打通从设计到硬件实现的完整链路,是FPGA初学者的实战入门指南。

mqtt6iot的博客 717

js脚本阻塞

本文翻译整理自:[url]http://yuiblog.com/blog/2008/07/22/non-blocking-scripts/[/url] 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下...

wangjingyi 427

自动驾驶仿真工具链集成:ECU TEST与VTD、VERISTAND的深度配置指南

本文详细介绍了自动驾驶仿真测试中ECU TEST、VTD与VERISTAND三大核心工具的深度集成与连接配置方法。通过解析工具链的角色分工,提供从单机到分布式部署的实战指南,并重点阐述了Test Bench Configuration与Test Configuration的关键参数设置、SSH免密登录配置,以及在线与离线工作模式的切换技巧,旨在帮助测试工程师高效构建稳定、自动化的硬件在环测试环境。

wind6的博客 791

JS以及CSS对页面的阻塞

一、JS阻塞 所有的浏览器在下载JS文件的时候,会阻塞页面上的其他活动,包括其他资源的下载以及页面内容的呈现等等,只有当JS下载、解析、执行完,才会进行后面的 操作。在现代的浏览器中CSS资源和图片p_w_picpath资源是并行下载的,在IE6中默认的并行的加载数目是2个,在IE6以后以及其他的浏览器中的默认的并行加载数目是6个。在浏览器从服务器接收到HTML文档后,并...

weixin_34248118的博客 253

PCIE6.0协议学习小记-Flit_Mode

PCIE6.0学习

code_aJack的博客 4644

modbus

从机地址 功能码 起始地址高位 起始地址低位 数量高位 数量低位 字节数 0001H高位 0001H低位 0002H高位 0002H低位 CRC高位 CRC低位。每个输入寄存器的长度为2个字节。其中,CDH对应线圈0013H到001AH的内容,01H对应线圈001B到001CH的内容,未使用位用0填充。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。从机地址 功能码 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRC高位 CRC低位。

lunhuicnm的博客 9756

【科技与狠活】—— JS实现页面阻塞三秒

while 循环 及 do while 的使用, 利用循环实现伪暂停进程 n 秒

技术前端,忠于热爱 @0.活在风浪里 3965

MuJoCo 机械臂关节空间阻抗控制Impedance实现(附代码)

阻抗控制通过调整关节的刚度和阻尼,让机器人在接触时产生顺应性,减少冲击力,其核心目标是在接触外部载荷时能够自适应调整输出力矩,实现力与位置的协同控制。阻抗控制可以很快的到达设定位置,在此基础上,使用mujoco交互中的施加外力操作,可以看到当外力松开后,机械臂也可以很快的回弹回设定位置。其中self.Kp和self.Kd为固定刚度和阻尼系数,通过修改刚度和阻尼参数,可以变得更柔顺来应对各种场景。注释掉该行后,直接simulate仿真可以看到机械臂控制位置震荡等情况,接下来引入关节空间阻抗控制的代码。

darcsdn 1276

Js使用Promise实现阻塞任务

Promise异步编程

fengchengwu2012的博客 1134

混合开关电容DCDC变换器技术解析与工程应用指南

在电源设计领域,传统DCDC变换器在高降压比或高升压比场景下,往往面临占空比过窄、开关应力大、效率偏低等瓶颈。开关电容变换器虽能实现固定比例的电压变换,却受限于调节能力。混合开关电容DCDC变换器通过“开关电容网络粗调变比+电感式DCDC细调输出”的策略,兼顾高效率、高功率密度与宽调压范围。本文梳理了其典型拓扑(如2:1/4:1 SC+Buck)、关键对比、控制策略(含软充电)及工程应用中的常见问题,帮助电源工程师在服务器供电、快充、车载电源等场景下快速选型与调试。

weixin_29164185的博客 314

SAR成像概述

1. 发展概述 雷达是英文Radar(Radio detection and ranging)的音译,原意为“无线电探测与测距”。雷达的发明是无线电发展史上的里程碑,二战时,英国急需通过雷达探测空中金属物体来帮助搜寻德国飞机,这期间,雷达技术飞速发展,发展出了地对空、空对地轰炸、空对空火控、敌我识别等功能。雷达在第二次世界大战中发挥了重大作用,至今仍是军用和许多民用领域的重要传感器。 早期雷达系统通过时间延迟来测距,通过天线指向来测角,通过多普勒频移测速。1951年,Carl Wiley发现,通..

5076

游览器中javascript的执行过程

在讲这个问题之前,先来补充几个知识点,如果对此已经比较了解可以直接跳过 大多数游览器的组件构成如图 在最底层的三个组件分别是网络,UI后端和js解释器。作用如下: (1)网络- 用来完成网络调用,例如http请求,它具有平台无关的接口,可以在不同平台上工作 (2)UI 后端- 用来绘制类似组合选择框及对话框等基本组件,具有不特定于某个平台的通用接口,底层...

weixin_30340775的博客 86

华为 MetaERP · 本体论驱动的 PTP 全流程智能建模方案

华为MetaERP通过“本体+事件+图谱+Agent”四位一体架构,将传统ERP从“记录系统”升级为“智能执行系统”。基于OWL本体实现业务语义精准表达,融合LLM与元数据多租能力,构建可推理、可治理的PTP全流程智能模型,解决AI理解业务逻辑难题,实现三单匹配自动化、关账效率提升30%、成本降低50%,推动企业数字化迈向可信智能新范式。

金牌架构师 182

JS以及CSS对页面的阻塞的代码解释

一、JS阻塞 所有的浏览器在下载JS文件的时候,会阻塞页面上的其他活动,包括其他资源的下载以及页面内容的呈现等等,只有当JS下载、解析、执行完,才会进行后面的 操作。在现代的浏览器中CSS资源和图片image资源是并行下载的,在IE6中默认的并行的加载数目是2个,在IE6以后以及其他的浏览器中的默认的并行加载数目是6个。 在浏览器从服务器接收到HTML文档后,并把HTML在内存中转换为DOM树,在...

sinat_32490761的博客 532

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

防止js脚本阻塞页面的方法

这意味着,如果一个页面中有多个 defer 脚本,它们将按照它们在 HTML 中出现的顺序依次执行,而且它们都会在 DOMContentLoaded 事件之前执行。多个带有 async 属性的脚本之间的执行顺序是不确定的。这意味着,如果一个页面中有多个 async 脚本,它们将并行下载和执行,并且它们之间的执行顺序是不确定的。属性适用于那些不需要整个文档都解析完成的独立脚本,比如用于分析数据或提供附加功能的脚本。属性适用于那些需要整个文档都解析完成之后再执行的脚本,比如用于操作 DOM 的脚本。

m0_70858457的博客 1401

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

什么是“阻塞渲染“?如何避免 JavaScript 代码阻塞页面渲染?

JS 阻塞 DOM 解析是因为可能修改 DOM;用 defer 保顺序、async 求速度、动态加载最灵活。

u013507907的博客 853

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

浏览器中JavaScript执行原理

本章我们讨论javascript在浏览器中是如果工作的,包括:下载、解析、执行的全过程。javascript的这些讨人嫌的地方我们是知道的: i.需要串行下载 ii.需要解析 iii.需要串行执行 而在chrchromium中,js是这样解析的:(其实第一章末尾已经有了) 至于一些步骤的解释,这里就不再复述了,不懂的请戳:浏览器渲染过程 拉至末尾。 简直就是大魔王有木有?心中可有一...

lengye7的博客 2775

外部JS的阻塞下载

转载于:http://www.cnblogs.com/mofish/archive/2011/09/29/2195256.html 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。至到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。 有人会问:为什么JS不能像CSS、image一样并行下载了?这里需要简单介绍一下浏览器构造页面的原理, 当浏览器从服务器接收到了HTML文档,并把HTML在内存中转换成DOM树,在转换的过程中如果发现某个节点(nod...

包磊磊的博客 546

JS文件加载/阻塞问题(性能优化)

上来先给一个问题:在书写html页面时,当你要从外部引入js文件时,主html文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js阻塞</title> &

weixin_45704555的博客 4709

前端性能之非阻塞加载js脚本

SCRIPT标签的阻塞行为会对页面的性能产生影响,这是因为浏览器在下载脚本、解析、执行的过程中不会同时做其他事情,比如渲染页面、响应用户事件等。之所以这样做是因为正在执行的JavaScript代码可能会改变页面元素、修改样式、添加或者删除事件等各种操作,以及最关键的脚本之间的依赖性,浏览器必须等待当前执行的脚本执行完成之后再进行后续操作。脚本阻塞两种加载方式HTML页面中的JavaScript脚本有

Oshyn —— 乐而学,学而乐 1889

JS跟CSS都是怎么阻塞的

总而言之,JS 和 CSS 的阻塞行为是浏览器为了确保页面正确渲染和脚本正确执行而采取的策略。让关键的 CSS 尽快加载,并妥善管理 JavaScript 的加载和执行时机,特别是利用好async和defer属性。

2202_75961842的博客 916

html文件是由什么解释执行的,整个HTML解析过程与JS脚本解析和执行顺序

HTML解析过程思考1:JavaScript为什么要放在HTML文档的底部?通常来说,浏览器对于Javascript的运行有两大特性:载入后马上执行执行时会阻塞页面后续的内容(包括页面的渲染、其它资源的下载)原因:当引用了JS的时候,浏览器发送1个js request就会一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代码直接改变了DOM树结构,比如使用 d...

weixin_39523625的博客 1875

css阻塞与js阻塞

js的阻塞特性:所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。 由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。 嵌

qq_36631168的博客 3579

JavaScript 脚本无阻塞下载系统

网站打开的速度永远是web设计考虑最大的一个因素,后台程序虽然重要,前台的页面加载速度也不容忽视,JS脚本让人又爱又恨,不能不用,却又因为阻塞式的下载,造成有些时候页面迟迟打不开,今天我带来的这个插件就是解决js脚本加载的。经调试无错,兼任IE 火狐 Android手机等浏览器,脚本见附件,注:部分代码参考网上 JS无阻塞加载 /* +--------------------...

ZQL15753702856的博客 152
上一篇: JavaScript &lt;script&gt;元素
下一篇: JavaScript 中的CData
前端小生
博客等级 码龄11年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值