浏览器工作原理

一、浏览器的组成部分及工作原理

 

1. 浏览器主要组成部分

参考文章:https://segmentfault.com/a/1190000018277184

(1)The User Interface用户界面

为Browser Engine提供接口,地址栏、书签、前进后退按钮等等,出了document文档,其他的都属于User Interpreter

(2)The Browser Engine 浏览器引擎、

为The Rendering Engine提供接口,如刷新、向前、退后等操作,让Rendering Engine重新渲染。

也为User Interface提供各种与错误、加载进度相关的消息

(3)The Render Engine 渲染引擎、

浏览器的渲染引擎就是浏览器的内核,用来解析HTML、XHTML、svg、css等文件,进行页面的渲染的。

js引擎和浏览器内核

浏览器是如何渲染页面的?

从服务器获取HTML文件,自上而下的对html文件进行解析,同时构建dom tree。

解析的过程中,遇到link标签,从服务器加载对应的css文件,同时构建css rule tree。

当遇到script标签时,由于JavaScript会对dom进行修改,所以停止dom tree和css rule tree的构建,从服务器加载该js文件,下载完成后,浏览器开启js引擎组件,直接对该js文件进行解析执行。所以的script标签都会执行该操作。

然后继续构建dom tree和css rule tree,构建完成之后,合并为render tree,这些操作是在Rendering Engine组件中完成的。

计算标签的尺寸位置大小等等属性,浏览器进行layout布局,paint绘制页面(调用的是UI Backend组件,操作系统)

(4)The Networking 网络、

基于互联网HTTP和FTP协议,处理网络请求。

网络模块负责Internet communication and security,character set translations and MIME type resolution。

另外网络模块还提供获得到文档的缓存,以减少网络传输。

(5)The JavaScript Interpreter: js解析器

解释和运行网站上的js代码,得到的结果传输到Rendering Engine来展示。

事件循环:

https://segmentfault.com/a/1190000018134157

https://zhuanlan.zhihu.com/p/33058983

阮一峰对event loop的理解:http://www.ruanyifeng.com/blog/2014/10/event-loop.html

js定时器机制:https://segmentfault.com/a/1190000015353521

setInterval调用有可能会被废弃:主线程的任务执行时间短时间内又定义了相同的setInterval,导致原本的setInterval还在事件队列中未执行,又被重新定义,原本的setInterval会被替代。
setInterval的连续执行:定时器的任务执行时间>定时器的时间。

可以这样理解setInterval,连续执行是因为他自己,被废弃执行是因为主线程又重新定义。

setTimeout和setInterval的执行时间都会受到宏任务的影响。

(6)The UI Backend: UI后端

一些底层操作系统的接口

(7)The Data Storage 数据储存

管理用户数据,浏览器需要在硬盘中保存类似cookie的各种数据。

img

还需要注意的是:搜索引擎是指:百度、搜狗、Google、雅虎。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值