web性能优化-浏览器工作原理中讲到,浏览器渲染是在renderer process中完成的。

那我们来看下renderer process究竟干了什么?

Renderer Process包含的线程有:

1.主线程 main thread

2. 工作线程 workder thread

3. 合成器线程 compositor thread

4. 光栅线程 raster thread

渲染进程的流程

构建DOM

  当渲染进程接受到导航的确认信息后,开始接受html数据,main thread 会解析文本字符串为DOM。

  渲染HTML为DOM的方法,由HTML standard定义

加载次级资源

  网页中常常包含图片,css, js等额外的资源,这些资源需要从网络或者cache中获取。

  Main thread会在构建DOM的过程中逐一请求他们。为了加速preloa scanner会同事运行,入股偶在HTML中<img><link>等标签,preload scanner会把这些请求传递给Browser process中network thread进行相关资源的下载

JS的下载和执行

  当遇到<script>标签时,renderer process会停止解析,而去加载,解析和执行js代码,阻塞渲染。不过有很多方法可以防止阻塞,这里不介绍了

样式的计算

  仅仅渲染DOM还不足获知页面的具体样式,main thread还会基于css选择器解析CSS获取每一个节点的最终的计算样式。

获取布局

  想要渲染一个完整的页面,除了获知每个节点的具体样式,还需要获取每个节点在页面上的位置,布局其实就是找到所有远的的几何欢喜的过程。

绘制各元素

  即使知道了DOM和CSSDOM,我们还需要知道不同元素的绘制先后顺序。在绘制阶段,主线程会遍历lauout tree创建绘制记录。

合成帧(合成帧不是很懂,将就看)

  main thread会遍历layout tree来创建层树layer tree,添加will-change css属性的元素,会被看成单独的一个层

  一旦层树被创建,渲染顺序被确定,主线程会把这些消息通知给合成器线程。合成器线程会栅格化每一个层

  栅格线程会栅格化每一个磁铁并存储在GPU显存中

  一旦磁铁被光栅化,合成器线程会创建合成帧

  合成帧后会通过IPC消息传递给browser process,这些合成帧会被传递给GPU process,然后显示在屏幕上。

  如果发生滚动,合成器线程会创建另外一个合成帧发送GPU。

那我们可以从以下几个方面去优化:

  • 顺序执行,并发加载
  • 是否阻塞
  • 依赖关系
  • 依赖方式
  • 重绘和重流

这些在之后的文章中会做详细的讲解

本文参照:https://developers.google.com/web/updates/2018/09/inside-browser-part3

  

web性能优化-浏览器渲染原理的更多相关文章

  1. web性能优化-浏览器工作原理

    要彻底了解web性能优化的问题,得搞清楚浏览器的工作原理. 我们需要了解,你在浏览器地址栏中输入url到页面展示的短短几秒中,浏览器究竟做了什么,才能了解到为什么我们口中所说的优化方案能够起到优化作用 ...

  2. web性能优化——浏览器相关

    简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...

  3. Web性能优化系列

    web性能优化之重要,这里并不打算赘述.本系列课程将带领大家认识.熟悉.深刻体会并且懂得如果去为不同的站点做性能优化 同时,本系列将还会穿插浏览器兼容性相关问题的解决方案,因为在我看来,兼容性同样属于 ...

  4. Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级

    摘要: 理解Preload与Prefetch. 原文:Web 性能优化:Preload,Prefetch的使用及在 Chrome 中的优先级 作者:前端小智 Fundebug经授权转载,版权归原作者所 ...

  5. Web性能优化 高并发网站解决 单例 已看1

    Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...

  6. web性能优化-网络传输性能优化

    浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...

  7. 关于WEB 性能优化 (摘抄)

    压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色 ...

  8. web性能优化 来自《web全栈工程师的自我修养》

    最近在看<web全栈工程师的自我修养>一书,作者是来自腾讯的前端工程师.作者在做招聘前端的时候问应聘者web新能优化有什么了解和经验,应聘者思索后回答“在发布项目之前压缩css和 Java ...

  9. Web 性能优化: 图片优化让网站大小减少 62%

    摘要: 压缩各种格式的图片. 原文:Web 性能优化: 图片优化让网站大小减少 62% 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是 Web 性能优化的第二篇,上一篇在下面看点 ...

随机推荐

  1. @Results注解使用方法

    @SelectProvider(type = HospitalSqlGenerator.class, method = "queryHospitalData") @Results( ...

  2. 【HANA系列】SAP HANA SQL字符串连接操作

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL字符串连 ...

  3. TensorFlow实战第一课(session、Variable、Placeholder、Activation Function)

    莫烦tensorflow教学 1.session会话控制 Tensorflow 中的Session, Session是 Tensorflow 为了控制,和输出文件的执行的语句. 运行session.r ...

  4. PTA(Basic Level)1047.编程团体赛

    编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: 输入第一行给出一个正 ...

  5. Java基础(十)

    复习 静态方法与成员方法 //另一个类里的静态和成员方法 public class MyClass { //静态方法 public static void method2() { System.out ...

  6. CentOS7安装Git-2.22.1

    1.Git: 分布式版本控制系统(最初用于Linux),每个人的电脑上都是一个完整的版本库,具有强大的分支管理. 自己可以在脱机环境查看开发的版本历史 多人开发时如果充当中央仓库的Git仓库挂了,任何 ...

  7. java开发性能调优

    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:1.首先需要解决网络带宽和Web请求的高并发,需要合理的加大服务器和带宽的投入,并且需要 ...

  8. 第一次把mysql装进docker里碰到的各种问题

    最近电脑经常关机要关好长时间,老是需要长按电源键强行关机.也不知道是怎么回事. 后来查看关机时的日志,发现是mysql停不掉.这可闹心了!怎么办?上网搜了搜也没有找到什么好的解决办法.总不能每次关机都 ...

  9. c++学习笔记之类和对象(一、类定义)

    类和对象是 C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言. 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量:创建对象的过程也叫类的实例化.每个对象都是类的一个 ...

  10. 滚动页面产生动画WOW.js的用法

    简介 在一些网页上,当你滚动页面的时候会看到各式各样的元素动画效果,非常动感.WOW.js 就是一款帮助你实现这种 CSS 动画效果的插件.WOW.js 依赖 animate.css,所以它支持 an ...