美文网首页
浏览器运行原理

浏览器运行原理

作者: kimberle | 来源:发表于2020-08-06 20:52 被阅读0次

一、浏览器结构(简化)

1. 用户界面
展示除标签页窗口之外的其他用户界面内容
2. 浏览器引擎
用于在用户界面和渲染引擎之间传递数据
3. 渲染引擎
负责渲染用户请求的页面内容

二、多进程浏览器(chrome为例)

可大致拆分为
1. 浏览器进程
2. 缓存进程
3. 网络进程
4. 渲染器进程
浏览器会在默认情况为每个标签页创建一个进程

  • Process-per-site-instance(默认)
    访问不同站点和同一站点的不同页面都会创建新的进程
  • Process-per-site
    同一站点使用同一进程
  • Process-per-tab
    一个tab里的所有站点使用一个进程
  • Single process
    让浏览器引擎和渲染引擎共用一个进程
    5. GPU进程
    6. 插件进程

三、在地址栏输入内容时浏览器内部变化

  1. 输入网址时
  • UI线程启动一个网络线程请求DNS进行域名解析然后连接服务器获取数据
  1. 输入关键字时
  • 使用默认搜索引擎查询
  • 检查站点是不是恶意站点
  • 网络线程通知UI线程,然后UI线程创建一个渲染器进程渲染页面
  • 浏览器进程将数据传递给渲染器进程,正式进入渲染流程
  • 渲染器进程的主线程将html进行解析,构造DOM数据结构(html通过Tokeniser标记化,通过词 法分析将输入的html将解析成多个标记,据此进行DOM树(以document为节点)构造)。构造过程中的其他资源如css、图片等一般不会阻塞html解析。但遇到script标签会停止解析,转而加载解析执行js
  • 解析完后获得DOM树,主线程解析css,确定DOM节点计算样式
  • 主线程通过遍历dom和计算好的样式生成layout树(DOM树节点不一定与layout树节点一一对应)
  • 主线程遍历layout树生成layer树(图层树)并确定绘制顺序后,再传递给合成器线程
  • 合成器线程将图层栅格化,并切分为许多图块,再将每个图块发送给栅格化线程,栅格完后存在GPU内存中,结束后合成器线程收集图块信息,据此生成合成器帧,通过IPC(进程间通信)传给浏览器进程
  • 浏览器进程将帧传给GPU,
  • GPU渲染到屏幕上

重排和重绘

重排:改变一个元素的尺寸位置属性时,会重新计算样式、布局、绘制及以后的所有流程
重绘:改变某个元素的颜色属性时触发样式计算和绘制
为什么要避免重绘和重排?:都在主线程上运行,会与JS抢占执行时间。当频繁发生重排和重绘时,JS运行时间较长的话,有可能会阻塞主线程,导致掉帧(前一帧绘制完成后,在这一帧剩余时间开始运行js,若运行到了下一帧的时间,则影响下一帧的绘制)
优化手段:

  1. 可以通过requestAnimationFrame(),将JS任务分成更小的任务块分到每一帧,在每一帧时间用完前暂停JS执行交还主线程
  2. 使用transform动画:不在主线程执行,而在合成器线程和栅格线程执行。不经过样式计算和布局绘制,节省运算时间

相关文章

  • 作用域、作用域链

    写出下面代码执行之后的结果,并分析原理 执行结果 原理分析考察点是js在浏览器中的运行机制 浏览器在运行js代码之...

  • 浏览器运行原理

    一、浏览器结构(简化) 1. 用户界面展示除标签页窗口之外的其他用户界面内容2. 浏览器引擎用于在用户界面和渲染引...

  • 浏览器运行原理

    进程 申请和拥有计算机资源 不同进程间通信通过进程间通信管道IPC 线程 一个进程多个线程,每个线程执行不同的任务...

  • PhpStorm+Docker+php7+Xdebug奇葩说

    Xsdebug运行原理 当浏览器输入http://192.168.1.186/index.php?XDEBUG_S...

  • (2)web服务运行模式及相关技术

    PHP运行环境 web软件的运行模式(原理) web软件的运行模式中,总是现在客户端(浏览器端),发起一个“请求”...

  • 3.xxs基础问题

    11、xss攻击原理及出现的原因攻击原理:对网页注入可执行代码且成功被浏览器运行,达到攻击的目的。 出现的原因:程...

  • H5 浏览器渲染原理浅析

    待续 参考 浏览器的渲染:过程与原理 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理 浏览器页面资源加载...

  • 常用浏览器事件解析

    之前写过一篇浏览器事件的相关操作和事件运行的原理——JavaScript浏览器事件解析。这一篇主要写一些常用的事件...

  • HTML/CSS/JS的解析渲染

    1.渲染器进程的内部工作原理 本系列分为 4 个部分,主要讲解关于现代浏览器的运行原理,本文为该系列的第 3 篇。...

  • 浏览器原理相关视频课程

    大话浏览器渲染原理浏览器渲染原理和打开网页机制HTTPS 网络协议原理解析从零开始,彻底掌握浏览器渲染原理深入V8...

网友评论

      本文标题:浏览器运行原理

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