「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」。
今天咱们来康康浏览器那些要知道的事情~
浏览器的主要功能就是从服务器请求到你想要的内容然后将其呈现出来,其中资源的格式通常是HTML,也有PDF、图像等等。
浏览器组成
浏览器的主要组件有:
1、用户界面--包括url地址栏、后退/前进按钮等
2、浏览器引擎--查询和操作渲染引擎的接口
3、渲染引擎--负责显示请求的内容。
4、网络--用于网络调用,如HTTP清求
5、UI后端
6、JavaScript解释器,用于解析和执行JavaScript代码
7、数据存储,这是一个持久层,浏览器需要在硬盘上保存各种数据,如cookies。
相信大家平时也不少用浏览器,也都见过哈。
渲染引擎
渲染引擎可以说是浏览器很重要的一部分了,接下来我们来康康他是怎么工作的。 渲染引擎(Webkit)流程图:
可以看出,渲染引擎的流程大致为:
1、解析HTML,生成 DOM Tree
2、解析CSS,生成Style Rules(CSSOM) (1和2是平行的)
3、二者结合,生成Render Tree
4、布局
5、绘制,展示出来
渲染阻塞注意点
主要有两个注意点:
第一:JS可以改变DOM结构,可以改变CSSOM的样式,这就导致了浏览器在遇到<script>标签时,构建DOM将会被暂停,直至脚本完成执行,然后接着构建DOM。如果脚本是外部的,就会等脚本下载完毕,再继续解析文档。
每次去执行JavaScript脚本都会严重地阻塞DOM树的构建,如果JavaScript脚本还操作了CSSOM,而正好这个CSSOM还没有下载和构建,浏览器甚至会延迟脚本执行和构建DOM,直至完成其CSSOM的下载和构建。这就是为什么建议在程序的结束位置引入外部js的原因。
第二:由于CSSOM负责存储渲染信息,浏览器就必须保证在合成渲染树之前,CSSOM是完备的,这种完备是指所有的CSS(内联、内部和外部)都已经下载完,并解析完,只有CSSOM和DOM的解析完全结束,浏览器才会进入下一步的渲染,这就是CSS阻塞渲染。
CSS阻塞渲染意味着,在CSSOM完备前,页面将一直处理白屏状态,这就是为什么样式放在head中,仅仅是为了更快的解析CSS,保证更快的首次渲染。
推荐好文(笔者讲的很详细): zhuanlan.zhihu.com/p/74792085
好啦,今天的内容到此结束886