美文网首页
一起了解浏览器(知己知彼)

一起了解浏览器(知己知彼)

作者: 钟钟353251 | 来源:发表于2019-03-15 11:28 被阅读0次

一、浏览器的进程

在浏览器中打开一个网页,相当于新起一个进程,进程内有自己的多线程。

如果是单线程,那么某个tab页奔溃了,就影响整个浏览器,体验差。所以浏览器是多线程的。

二、浏览器的内核(渲染进程)

页面渲染、js的执行、事件的循环都在这个进程进行。

浏览器的渲染进程是多线程的。

包含哪些线程呢?

1、GUI渲染线程

    . =>负责渲染浏览器界面,解析HTML、css、构建dom树和renderObject树、布局、绘制等;

    . =>当界面需要重绘(repaint)或由于某种操作引发回流(reflow)时,该线程就会执行;

    . =>GUI渲染线程与js引擎线程是互斥的:当js引擎执行时,GUI线程会被挂起(相当于被冻结了),GUI更新会被保存在一个列队中,等到js引擎空闲时立即被执行

2、js引擎线程

  . => js内核负责处理JavaScript脚本程序

    .=>js引擎线程负责解析JavaScript脚本,运行代码

    .=>js引擎一直等待着任务列队中任务的到来,然后加以处理。一个tab页(render进程)中无论什么时候都只有一个js线程运行js程序

     .=>同样注意,CUI渲染线程与js引擎线程是互斥的。所以如果js执行时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞。

3、事件触发线程

    . =>事件触发线程归属于浏览器而不是js引擎。用来控制事件的循环。可以理解为:js引擎忙不过来,需要浏览器另开线程来协助。

    . =>当js引擎执行代码如setTimeout时(也可来自浏览器内核的其他线程,如鼠标点击、ajax异步请求等),将会对应任务添加到事件线程中。

    . =>对对应的事件符合条件被触发时,该线程会把事件添加到待处理队列尾部,当代js引擎处理

    . =>JS单线程关系,待处理队列中的事件都是排队。等待js引擎处理js引起空闲才会去执行

4、定时器触发线程

  . =>传说中的setInerval 与 setTimeout 所在的线程

   . => 浏览器定时器计数器并不是由js引擎计数的(因为js引擎是单线程的,如果处于阻塞状态就会影响计时的准确性)

  . =>因此,通过单线程来计时并触发定时(计时完毕后添加到事件列队中,等待js引擎空闲后执行)

  . =>W3C在HTML标准中规定,需要setTimeout中低于4ms的时间间隔算为4ms

相关文章

  • 一起了解浏览器(知己知彼)

    一、浏览器的进程 在浏览器中打开一个网页,相当于新起一个进程,进程内有自己的多线程。 如果是单线程,那么某个tab...

  • 有效的沟通

    1. 知己知彼 有效沟通的前提是知己知彼,首先必须了解沟通的对象。当人们感觉到你了解他们时,才会更开放地接受你的影...

  • 《什么是最好的教育》

    常言道:“知己知彼,百战不殆”,养育孩子过程中,了解孩子很重要,了解自己同样重要。 今天一起来看看在孩子的教育方面...

  • 1.10

    知己知彼,首先要认清自己!要懂得天时地利,了解地形!

  • 1.10日课程总结

    知己知彼百战百胜,了解对方的同时,更要了解自己,了解顾客的需求,了解产品的定位,在销售中获胜。

  • 扒开菲律宾的外衣:经济停滞 军费猛增

    知己知彼:过去25年菲律宾军费详解 面对仲裁案,我们不仅需要坚决的态度,还要了解菲律宾的基本情况。知己知彼! 菲律...

  • 地形篇4

    知己知彼知地形,我们不仅要了解自己了解竞争对手,更重要的是要了解当下形势,才能制定出最优方案。

  • 2019-01-21

    行军打仗要了解对方的一切,知己知彼才能打胜仗。

  • 增广贤文02

    很高兴和友友们一起来学习! 知己知彼,将心比心。 知道自己也了解别人,用自己的心去体会别人的心。 这句话很实用。对...

  • 学习任何东西,一知半解就等于无知

    读书营打卡第三天 1、了解带来力量 “知己知彼,百战不殆。不知己知彼,一胜一负,不知彼,不知己,每战必殆。” “知...

网友评论

      本文标题:一起了解浏览器(知己知彼)

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