浏览器渲染原理

用户在浏览器地址栏中输入网址,到页面加载出来,中间发生了哪些事情?

基本概念:
**进程:**比如打开n个程序,则是n个进程
**线程:**一个程序中进行多个操作,则是多个线程
**栈内存:**提供环境,用来执行代码
堆内存:
在这里插入图片描述
1.HTTP的请求阶段
用户在浏览器输入网址后,浏览器会帮助我们向服务器发送请求;

请求阶段需要注意的:
DNS解析、
DNS缓存,
TCP协议的三次握手和四次握手、
http和https的区别(http2)

2.响应阶段:

响应阶段需要注意的点:
HTTP状态码
304缓存
HTTP报文

浏览器拿到代码后,浏览器在内存条中开辟一块栈内存,用来给代码执行提供环境,同时分析一个主线程去一行行的解析和执行代码

进栈执行——》执行完出栈(每行代码都会执行这个操作)

注意:浏览器遇到link /script/img等请求之后,都会开辟一个新的线程来执行
【浏览器是多线程执行的,但是只分配了一个线程给js代码,js是单线程的】

浏览器会开一个任务队列(task queue)来安排执行的任务,主线程继续解析js

因此,刚开始浏览器刚开始只生成了DOM树(css不一定加载完成)

DOM树加载完之后,就去task queue中去找已经执行完的任务(event loof 事件循环)
event loop:主任务完成之后,会不断的到等待任务队列中,一直到等待任务事件执行完毕

需要了解:
微任务
宏任务

事件循环之后,css加载完成,生成CSSOM

浏览器之后将DOM树和CSSOM结合生成RenderTree渲染树

开始绘制,随即调用电脑的显卡

HTTP的响应阶段

浏览器渲染阶段

总的过程:
解析DOM/CSSOM树
生成Render树
layout回流:根据当前位置算回流
painting(重绘):样式
display:将像素发给:GPU,展示在页面上

如图:
在这里插入图片描述
在这里插入图片描述
浏览器内核:

参考这篇文章:
https://www.jianshu.com/p/8033171236dd

性能优化:
1.减少http的请求次数和大小
资源合并压缩
图片懒加载
音视频走流文件

【性能优化内容需要补充】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值