[关闭]
@ranger-01 2018-05-28T11:45:41.000000Z 字数 3268 阅读 1650

浏览器如何加载页面

web


1. 浏览器的多进程与多线程

image_1cegra5dm63r10og1vg922qu4f9.png-101.9kB

相比于单进程浏览器,多进程有如下优点:

1.1 浏览器有哪些进程

1.2 渲染进程包含哪些线程

image_1cegrl011lnf781omt1udm158am.png-18.4kB

2. GUI线程与JS线程的互斥

image_1cegt8d511i6a1tks75j12m31ude13.png-38.1kB

3. 页面渲染步骤

3.1 渲染过程

image_1cegu6i9ap9mkmp2om1nhu1f0t1g.png-38.7kB

3.2 reflow & repaint

image_1cegv0jbg10tn5hlb83br6jhl1t.png-70.9kB

4. JS运行机制

这里就直接引用一张图片来协助理解:(参考自Philip Roberts的演讲《Help, I’m stuck in an event-loop》

image_1ceh22rbg1ta4js21ual1f6i6a22a.png-28.5kB

上图大致描述就是:

4.1 macrotask与microtask

  1. console.log('script start');
  2. setTimeout(function() {
  3. console.log('setTimeout');
  4. }, 0);
  5. Promise.resolve().then(function() {
  6. console.log('promise1');
  7. }).then(function() {
  8. console.log('promise2');
  9. });
  10. console.log('script end');
  11. // output
  12. script start
  13. script end
  14. promise1
  15. promise2
  16. setTimeout

image_1ceh2e3dq4tk1lf819c91kdml1b2n.png-25.5kB

5. 参考

  1. JS 和 CSS 的位置对资源加载顺序的影响(有示例)
  2. html,css,js加载顺序
  3. DOM 操作成本到底高在哪儿?
  4. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
  5. 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系
  6. GET请求与POST的秘密
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注