浏览器解析HTML文档的资源并下载
<img />,<style>这些资源是并行请求与加载。
<script>脚本是同步请求与加载,阻塞加载。加载完成并执行后再继续解析HTML。
动态<script>是异步加载,就是说可以同时加载其他资源。
关于<script>的执行,分为立即执行和延迟执行。
对于浏览器来说,不管是<style>, <img />, <script>都是一视同仁,都是并行请求多个资源文件并加载,而不是一次只请求一个资源并加载。
只不过最大连接数有限制, 为6个或2个,并行加载6个资源。
但是遇到<script>会有特殊,即阻塞加载其他资源,比如<img/>等。
<script>加载与执行两个阶段,加载是阻塞其他资源的加载,执行也会阻塞。
执行是肯定会阻塞,这个没有什么异步执行,只有延迟执行和立即执行。
加载是并行加载,但是<script>特殊,故分为同步和异步加载。
HTML解析过程中,遇到<style>, <img/>, <script>会去并行加载外部资源。
同步加载(阻塞模式)但是遇到<script>时,会阻止浏览器的后续处理,停止后续的HTLM的解析,因此阻塞后续页面的处理,比如<img/>, <script>, <style>等资源的加载,以及HTML的渲染,和代码的执行。
异步加载(非阻塞),下载js的同时,还会继续进行后续页面的处理。
js 之所以要同步执行,是因为 js 中可能有输出 document 内容、修改dom、重定向等行为,所以默认同步执行才是安全的。
<script>的阻塞不仅仅是资源文件的加载,而是HTML的解析和渲染,导致了不能加载包含的资源文件。
执行JS必然会阻塞其他一切资源的加载,但是异步加载不会阻塞资源的加载。
但是加载完之后是立即执行还是延迟执行这个可以通过defer来指定。
async异步加载,立即执行。
defer异步加载,延迟执行。
浏览器解析HTML文档的资源并下载的更多相关文章
- apache不解析php文档?提示需要下载(转)
在httpd.cong中 LoadModule php5_module modules/libphp5.so #这一行php5安装的时候就已经自动添加上了 AddType application/x- ...
- 使用JDOM解析xml文档
一.使用JDOOM解析xml文档 准备工作 1.下载JDOM.jar 包 解析代码如下 import org.jdom2.Attribute; import org.jdom2.Document; i ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 源生API解析XML文档与dom4j解析XML文档
一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...
- 大杂烩 -- 四种生成和解析XML文档的方法详解
基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...
- 四种生成和解析XML文档的方法介绍
解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 1.DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方 ...
- <JavaScript>“浏览器模式”和“文档模式”之间的区别
只有IE浏览器中才会有“浏览器模式”和“文档模式”,兼容性视图涉及两个重要的功能便是“浏览器模式[browser mode]”和“文档模式[document mode]”,在IE8/IE9中按F12键 ...
随机推荐
- MYSQL数据库表中字段追加字符串内容
$sql="update parts set p_notes=concat(p_notes,'{$p_notes}') where p_id={$p_id}"; parts为表名 ...
- N进制数组转换成正整数
给定一个任意长度的数组,其中的元素按照一定的进制(N进制)来转换成正整数 //把数组中的元素按照N进制转换成为正整数 #include <stdio.h> #include <std ...
- 信驰达蓝牙4.0模块全面升级 v2.20 U最新发布
作为国际蓝牙联盟成员之一,德州仪器(TI)于2012年强势推出CC254X系列单芯片(SOC)低功耗蓝牙收发器,经典51内核,最强优势在于丰富的外围(21个IO,UART,SPI,USB2.0,PWM ...
- 使用 libevent 和 libev 提高网络应用性能——I/O模型演进变化史
构建现代的服务器应用程序需要以某种方法同时接收数百.数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作. 有许多解决方案,但事件驱动也被广泛应用到网络编程中.并大规模部署在高 ...
- 苏泊尔借助微软CRM提升客户满意度
企业背景 作为中国最大.全球第二的炊具研发制造商和中国小家电领先品牌,品质和创新一是苏泊尔矢志追求的企业理念,从火红点无油烟锅的发明到能做柴火饭的球釜IH饭煲的面世,苏泊尔用产品的创新和品质的承诺,不 ...
- ios多线程和进程的区别(转载)
很想写点关于多进程和多线程的东西,我确实很爱他们.但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手. 今天终于下了决心,写点东西,以后可以再修修补补也无妨. 一.为何需要多进程(或者 ...
- Java中的访问权限
Java中有四种访问权限,从大到小依次是:public –> protected –> default(friendly) –> private. 简单说明下: public 作用域 ...
- Labview实现单边带信号调制(SSB)[滤波法]
Labview实现单边带信号调制(SSB)[滤波法] 首先用信号仿真器得到一个被调制信号m(t),以及载波信号,该实验选择正弦信号作为载波信号. 根据调制器模型 得到一个结果信号. 其中,H(w)的选 ...
- iOS 进阶 第二十一天(0531)
0531 - Autolayout 不仅可以做屏幕适配还可以做系统适配 uidynamic 做物理动画.能做的效果如下图: Autolayout Autolayout 是一种“自动布局”技术,专门用来 ...
- Java-包
定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中即可 ...