- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浏览器渲染基本原理解析与前端性能优化;浏览器渲染基本原理解析与前端性能优化;1.浏览器主要组成与浏览器线程;注意:chrome浏览器与其他浏览器不同,chrome使用多个渲染引擎实例,每个Tab页一个,即每个Tab都是一个独立进程。;1.2 浏览器中的进程与线程;1. 2.1 GUI 渲染线程;1.2.2 JavaScript引擎线程;1.2.3 定时触发器线程;1.2.4 事件触发线程;1.2.5 异步http请求线程;2. 渲染过程; 以上步骤是一个渐进的过程,为了提高用户体验,渲染引擎试图尽可能快的把结果显示给最终用户。它不会等到所有HTML都被解析完才创建并布局渲染树。它会在从网络层获取文档内容的同时把已经接收到的局部内容先展示出来。;2.2 渲染细节;假设浏览器获取返回的如下HTML文档:
!doctype html
html
head
link rel=stylesheet href=./theme.css/link
script src=./config.js/script
title关键渲染路径/title
/head
body
h1 class=title关键渲染路径/h1
p关键渲染路径介绍/p
footer@copyright/footer
/body
/html
;首先浏览器从上到下依次解析文档构建DOM树,如下:;2.2.2 生成Render树
浏览器在碰到 link 和 style 标签时,会解析css生成cssom , 当然,link标签需要先将css文件加载完成才能解析。
生成DOM树的同时会生成样式结构体CSSOM(CSS Object Model)Tree,再根据CSSOM和DOM树构造渲染树Render Tree,渲染树包含带有颜色,尺寸等显示属性的矩形,这些矩形的顺序与显示顺序基本一致。
js 代码会阻塞cssom的构建,在webkit内核中有所优化,只有js访问css才会阻塞
cssom的构建与dom树的构建是并行的
减少css的嵌套层级和合理的定义css选择器可以加快解析速度
;构建CSSOM树;2.2.3. DOM树与Render树; 在cssom 和dom 树都构建完成后,浏览器会将他们结合,生成渲染对象树,渲染树的每一个节点,包含了可见的dom节点和节点的样式 。需要注意的是:
renderObject树 与 dom树不是完全对应的,不可见的元素如 display:none 是不会放入渲染树的。
visibility:hidden的元素在Render Tree中
2.2.4. 布局与绘制
上面确定了renderer的样式规则后,然后就是重要的显示元素布局了。当renderer构造出来并添加到Render树上之后,它并没有位置跟大小信息,为它确定这些信息的过程,接下来是布局(layout)。
这一步是浏览器遍历渲染对象树,并根据设备屏幕的信息,计算出节点的布局、位置,构建出渲染布局树(render layout)。渲染布局树输出的就是我们常说的盒子模型,需要注意的是:
float, absolute , fixed 的元素的位置会发生偏移
我们常说的脱离文档流,其实就是脱离布局树;在绘制(painting)阶段,渲染引擎会遍历Render树,并调用renderer的 paint() 方法,将renderer的内容显示在屏幕上。绘制工作是使用UI后端组件完成的。
2.2.5. 回流与重绘
因为js代码可以访问和修改dom节点和css,所以在解析js的过程中会导致页面重新布局和渲染,这就是回流(reflow)和重绘(repaint) 。
回流(reflow):当浏览器发现某个部分发生了点变化影响了布局,需要倒回去重新渲染。比如元素的大小、位置发生了改变,而导致了布局的变化,从而导致了布局树的重新构建和渲染。
回流的触发: dom元素的位置和尺寸大小的变化
dom元素的增加和删除
伪类的激活
窗口大小的变化
增加和删除class样式
动态计算修改css样式; 重绘(repaint):重绘是指css样式的改变,但元素的大小和尺寸不变,而导致节点的重新绘制。
重绘的触发:
任何对元素样式,如 background-color、 border-color、 visibility 等属性的改变。css 和 js 都可能引起重绘。;3. 关键渲染路径与阻塞渲染;3
您可能关注的文档
最近下载
- 专题05 解三角形(10类题型全归纳)-2025年高考数学二轮热点题型归纳与变式演练(北京专用)(解析版).docx VIP
- 加氢实操考试112.doc VIP
- 汽油加氢装置操工高级理论知识试卷.doc VIP
- 初中物理校本课程教材《身边的物理学》.docx
- 日立电梯HPM(3-4MS)故障检测说明.pptx
- 道德与法治人教版二年级上册版教案教学设计.docx
- 科技背景下蜜雪冰城如何用数据驱动决策提升业绩.docx VIP
- 湖北师范大学 826计算机软件技术基础 2016年考研专业课真题.pdf VIP
- 蜜雪冰城数据驱动下的营销策略变革.docx VIP
- 机电安装工程合同标准版(业主版).doc VIP
文档评论(0)