浏览器的组成和运行机制

浏览器的组成

浏览器由7部分组成,分别是:
用户界面:包括浏览器中可见的地址输入框,浏览器前进和返回按钮,打开书签,打开历史记录等
网络:网络功能模块则是浏览器开启网络线程发送请求或下载资源文件的模块,例如dom树解析过程中请求静态资源,首先是浏览器中的网络模块发起的
浏览器引擎:浏览器可以在用户界面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器各部分之间交互通信的核心
渲染引擎:浏览器渲染引擎的功能是解析dom文档和css规则,并将内容排版到浏览器中,显示有样式的界面,也有人称之为模板引擎,我们通常说的浏览器内核则是渲染引擎
UI后端:后端则是用于绘制基本的浏览器窗口内控件,比如组合输入框,按钮,输入框等
JS解析器:Javascript解析器则是浏览器解释和执行javascript脚本的部分,例如V8引擎等
持久化数据存储:浏览器持久化数据存储则设计cookie,Localstorage等一些客户端存储技术,可以通过浏览器引擎,提供API进行调用。

浏览器的运行机制

1、 浏览器渲染使多进程的
Cpu进程
最多1个,用于3D绘制
Browser进程

  • 负责浏览器界面展示,与用于交互,比如前进、后退等 负责各个页面管理,
  • 创建或者销毁其他进程
  • 将Renderer进程得到的内存中的bitmap,绘制到用户界面上
  • 网络资源管理,下载等

第三方插件进程
每种类型的插件对应一个进程,仅当使用该插件的时候才创建
浏览器渲染进程(浏览器内核)
默认每个tab页一个进程
页面渲染,脚本执行,事件处理等
2、 浏览器渲染进程是多线程的
GUI渲染线程
负责渲染浏览器界面,解析html,css,构建dom树和RenderObject树,布局和绘制等
当页面需要重回或者由于某种操作引发回流时,该线程就会执行
GUI渲染与js引擎时互斥的,当JS引擎执行时,GUI线程会被挂起,gui更新会被保存在一个队列中等到JS空闲时被执行。
JS引擎线程
称为的JS内核,负责处理Javascript脚本程序比如V8引擎
JS引擎线程负责解析Javascript脚本,运行代码
JS引擎一直等待任务队列中任务的到来,然后加以处理,一个tab页(render进程)中只有一个js线程在运行
同样注意:GUI渲染线程与JS引擎时互斥的,所以如果JS执行时间过长,要放在body下面,否则会导致页面渲染加载阻塞。
事件触发线程

  • 管理着事件队列
  • 监听事件,符合条件时把回调函数放入事件队列中

定时触发器线程
SetInterval与setTimeout在此线程中计时完毕后,把回调函数放入事件队列中
浏览器定时计数器并不是由javascript引擎计数的(因为javascript引擎时单线程的,如果处于阻塞状态就会影响计时的准确)因此通过单独线程来计时并触发计时器(计时完毕后,添加到到时间队列中,等待JS引擎空闲后执行)
W3C在html标准中规定,规定要求setTimeout中低于4ms的时间间隔设为4ms
异步http请求线程
检测到XHR对象变化时,将回调函数放入事件队列中
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值