web性能优化-浏览器渲染原理
在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性能优化-浏览器渲染原理的更多相关文章
- web性能优化-浏览器工作原理
要彻底了解web性能优化的问题,得搞清楚浏览器的工作原理. 我们需要了解,你在浏览器地址栏中输入url到页面展示的短短几秒中,浏览器究竟做了什么,才能了解到为什么我们口中所说的优化方案能够起到优化作用 ...
- web性能优化——浏览器相关
简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...
- Web性能优化系列
web性能优化之重要,这里并不打算赘述.本系列课程将带领大家认识.熟悉.深刻体会并且懂得如果去为不同的站点做性能优化 同时,本系列将还会穿插浏览器兼容性相关问题的解决方案,因为在我看来,兼容性同样属于 ...
- Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级
摘要: 理解Preload与Prefetch. 原文:Web 性能优化:Preload,Prefetch的使用及在 Chrome 中的优先级 作者:前端小智 Fundebug经授权转载,版权归原作者所 ...
- Web性能优化 高并发网站解决 单例 已看1
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- web性能优化-网络传输性能优化
浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...
- 关于WEB 性能优化 (摘抄)
压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色 ...
- web性能优化 来自《web全栈工程师的自我修养》
最近在看<web全栈工程师的自我修养>一书,作者是来自腾讯的前端工程师.作者在做招聘前端的时候问应聘者web新能优化有什么了解和经验,应聘者思索后回答“在发布项目之前压缩css和 Java ...
- Web 性能优化: 图片优化让网站大小减少 62%
摘要: 压缩各种格式的图片. 原文:Web 性能优化: 图片优化让网站大小减少 62% 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是 Web 性能优化的第二篇,上一篇在下面看点 ...
随机推荐
- MathType 6.0中MT Extra(TrueType)问题
问题 MathType 6.0中MT Extra(TrueType)字体问题在打开MathType6.0时,有时会提示MathType需要安装一个较新版本的MT Extra(TrueType)字体,这 ...
- C#编程 socket编程之udp服务器端和客户端
基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低.至于可靠性,可通过应用层的控制来满足.(不可靠连接) 使用Udp协议通讯需要具备以下几个条件: (1).建立一个套接字(Socket) ...
- Bootstrap+JSP实例学习笔记一.简单的带登录功能的首页
前言 Bootstrap 是流行的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.源自于twiteer内部的开发框架. 当前(2019-05)最新版本是v3.3. ...
- 关于content的理解
Context字面意思上下文,位于framework packageandroid.content.Context中,其实该类为long型,类似Win32中的Handle句柄,很多方法需要通过 Con ...
- JavaSE编码试题强化练习1
1. 编写应用程序,创建类的对象,分别设置圆的半径.圆柱体的高,计算并分别显示圆半径.圆面积.圆周长,圆柱体的体积. /** * 定义父类--圆类 */ public class Circle { / ...
- Linux 概念与快捷方式
概念 何为shell Shell 是指"提供给使用者使用界面"的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe .普通意义上的 Shel ...
- [转帖]规模化敏捷-简要对比SAFe、LeSS和DAD模式
规模化敏捷-简要对比SAFe.LeSS和DAD模式 http://blog.sina.com.cn//s/blog_15e1409550102x5yx.html 分类: 敏捷开发 目前有三种将Sc ...
- 数据结构之二叉树篇卷四 -- 二叉树线索化(With Java)
一.线索二叉树简介 二叉树本身是一种非线性结构,然而当你对二叉树进行遍历时,你会发现遍历结果是一个线性序列.这个序列中的节点存在前驱后继关系.因此,如何将这种前驱后继信息赋予给原本的二叉树呢?这就是二 ...
- (电脑重置之后)win10在桌面点右键鼠标一直转圈;无法点击桌面图标;
昨天重置系统之后,发现了这个毛病.桌面任务栏都能正常点击,就是一到桌面,无法点击桌面上面的图标(刚开机的时候还可以点).想新建文件夹来着,一点右键,鼠标即开始转圈圈.本来以为自己能好,结果第二天了还这 ...
- 在Qt5使用中文(vs环境)
如果是使用mingw版本的Qt create, 也就是使用GCC编译器应该没那么多事吧. 不过我还是用惯了VS呢. 好了,废话不多说,开始总结vs下乱码的解决方案. vs2003 把源码存成 utf- ...