美文网首页
浏览器资源加载顺序

浏览器资源加载顺序

作者: Jony0114 | 来源:发表于2019-07-26 17:43 被阅读0次

资源加载顺序

在加载web资源时,首先下载html文件,进行html解析,在遇到javascript或css标签时,启动相应的解析机处理。

当遇到外部资源时(如<script src='xxx'>)启动网络接口程序,下载对应的资源并交由相应的解析机处理。

在执行javascript的解析的时候,为了保证javascript操作DOM的准确性,此时DOMTree的构建工作必须被中断掉(当然对于HTML资源序列化和输入DOM构建机动作可以同步进行,浏览器此时也可以加载外部资源、排版、显示等),直到javascript的解析动作完成,之后可以继续HTML的解析和DOMTree的构建。

我们知道CSS不会影响到DOMTree的构建,但是如果此时javascript需要取得某些样式信息,必然需要CSS已经被解析,为了防止javascript取CSS出现未定义的问题,通常在执行CSS解析的时候,javascript的执行会被阻塞。对于webkit而言,webkit本身对此进行了优化,即在javascript可能会用到某些样式而此时样式尚未解析完毕时阻塞javascript解析。

换一种方式理解:

DOM文档的加载顺序是由上而下的顺序加载;

1、DOM加载到link标签

css文件的加载是与DOM的加载并行的,也就是说,css在加载时Dom还在继续加载构建,而过程中遇到的css样式或者img,则会向服务器发送一个请求,待资源返回后,将其添加到dom中的相对应位置中;

2、DOM加载到script标签

由于js文件不会与DOM并行加载,因此需要等待js整个文件加载完之后才能继续DOM的加载,倘若js脚本文件过大,则可能导致浏览器页面显示滞后,出现“假死”状态,这种效应称之为“阻塞效应”;会导致出现非常不好的用户体验;

而这个特性也是为什么在js文件中开头需要$(document).ready(function(){})或者(function(){})或者window.onload,即是让DOM文档加载完成之后才执行js文件,这样才不会出现查找不到DOM节点等问题;

js阻塞其他资源的加载的原因是:浏览器为了防止js修改DOM树,需要重新构建DOM树的情况出现;

可以将scirpt标签放在body标签之后,这样就不会出现加载的冲突了。

相关文章

  • 浏览器资源加载顺序

    资源加载顺序 在加载web资源时,首先下载html文件,进行html解析,在遇到javascript或css标签时...

  • 浏览器解析CSS原理

    阅读原文 1、浏览器解析加载资源与渲染顺序 浏览器下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进...

  • 使用 preconnect 提前与服务端建立连接

    preload 使用preload加载最重要的资源,以高优先级加载资源 允许浏览器设定资源加载的优先级 赋予浏览器...

  • HTML页面加载顺序,这个过程发生了什么

    看了几篇文章,做个整理笔记: HTML页面加载顺序,这个过程发生了什么 浏览器网络拉取资源是多线程的。但是dom树...

  • js - 详解

    事件类型 window.onload = function () {} 浏览器加载事件 - 页面资源加载完毕后再...

  • javascript性能优化

    优化页面加载时间html标签加载顺序浏览器加载和执行script标签引入的js时,会暂停页面渲染,直到代码加载并执...

  • 播放器

    video标签 flash 自定义播放器界面 视频的加载顺序与提前加载资源文件

  • 页面性能

    资源压缩合并,减少http请求 非核心代码异步加载 --->异步加载的方法--->异步加载的区别 利用浏览器缓存-...

  • 浏览器入门学习

    浏览器加载机制 一、如何异步加载脚本 使用defer或async: defer:有顺序的,等文档读取和解析完成之后...

  • 小程序:脚本的执行顺序问题

    脚本的执行顺序 浏览器中,脚本严格按照加载的顺序执行,如代码2-29所示。 代码清单2-29 浏览器中的脚本 以上...

网友评论

      本文标题:浏览器资源加载顺序

      本文链接:https://www.haomeiwen.com/subject/zoehgqtx.html