从输入URL后浏览器的渲染逻辑
从输入URL到浏览器渲染页面需要经过很多过程,本文简单说明下各个环节的内容
主要渲染节点如下:

一、浏览器进程说明
出于安全考虑,打开一个浏览器的Tab页签,会生成1个浏览器主进程、1个网络进程、1个GPU进程以及多个渲染进程和多个插件进程,所以不同页签数据无法相互访问,
多个进程也可以提高渲染的速度,最直接的现象就是打开浏览器后,任务管理器会出现多个Google页面的进程但是渲染进程与其他的进程有些区别,可见下文
1. 浏览器主进程:中控系统,主要复杂与用户交互、子进程管理和文件存储的功能
2. 网络进程:面向渲染进程和浏览器主进程提供网络下载功能。
3. 渲染进程:把下载到的HTML、css、JavaScript、图片等资源解析为可以显示和交互的页面,由于下载的代码可能存在恶意代码,所以渲染进程在安全沙箱允许,提供系统的安全性;
还有一个注意点,如果多个页签打开同一个网站,则这几个网站共用一个渲染进程,提高渲染效率,最直观现象:比如某个页签卡死了,则其他页签同网站的代码也卡死了,但是不同域的网站却可以正常操作。
新开一个页签一般只有一个渲染进程,但是如果页面中包含iframe时会存在多个渲染进程
4. GPU进程:最初用于渲染3D效果,后来也被用于渲染UI
5. 插件进程:负责浏览器插件的运行,因为插件崩溃机率较大,所以运行在沙箱环境中
二、页面渲染的主要步骤

1. 输入URL,,组装完整的URL
2. 检查本地是否有IP地址缓存(如果没有则进行DNS查询),主进程通过IPC把URL发送给网络进程
3. 查找本地资源,资源是否在有效期内
3. 进入TCP队列,然后创建TCP连接(三次握手)
4. 发送HTTP请求,包含cookie,请求体等信息
5. 网络进程接受请求,判断请求体状态(200: 根据响应头的Content-type决定如何响应; 301/302:重定向;304:资源有缓存)
6. 准备渲染进程,判断是否是同域站点,决定是否复用渲染进程
7. 浏览器主进程收到网络进程的响应头数据,像渲染进程发送【提交文档】消息
8. 渲染进程收到【提交文档】消息后,与网络进程建立传输通道
9. 主进程收到【确认提交】消息后,移除就文档、更新界面和地址栏等内容(期间浏览器加载中的小圆圈状态会从请求时的逆时针变为渲染阶段的顺时针旋转)
10. 收到页面,解析HTML标签,构建DOM树
11. 遇到CSS则进行CSS下载和解析生成CSS树(CSSOM,使用window.getComputedStyle可以获取查看),每个节点具体的样式,然后继续解析HTML;如果标签中有defer和async属性,则解析DOM和下载资源同步执行
12. 接下来则是进行页面布局,DOM和CSSOM结合生成渲染树,计算每个节点的位置和样式
13. 每个节点生成专用图层,包含位置属性,颜色值和透明度等
14. 渲染引擎对图层树进行渲染,如果期间DOM的颜色有变化则会触发重绘功能,如果位置有变化或者出现DOM增删则会触发重排功能
从输入URL后浏览器的渲染逻辑的更多相关文章
- 输入url后浏览器干了些什么(详解)
输入url后浏览器干了些什么(详解) DNS(Domain Name System, 域名系统) 解析 DNS解析的过程就是寻找哪台机器上有你真正需要的资源过程.但你在浏览器张红输入一个地址时,例如: ...
- 输入URL后浏览器的过程
In this article, I want my readers to get a picture of a very basic concept of the web world. Previo ...
- 在浏览器输入URL后发生了什么?
摘录部分一:https://www.cnblogs.com/kongxy/p/4615226.html 从输入URL到浏览器显示页面发生了什么 当在浏览器地址栏输入网址,如:www.baidu.com ...
- 在浏览器输入 URL 后会发生什么?超级详细介绍
一个古老的面试问题:当你在浏览器中输入whosmall.com并且按下回车之后发生了什么? 不过我们不再局限于平常的回答,而是想办法回答地尽可能具体,不遗漏任何细节. 这将是一个协作的过程,所以深入挖 ...
- 在浏览器输入url后并回车发生了哪些过程
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- 【转】浏览器中输入url后发生了什么
原文地址:http://www.jianshu.com/p/c1dfc6caa520 在学习前端的过程中经常看到这样一个问题:当你在浏览器中输入url后发生了什么?下面是个人学习过程中的总结,供个人复 ...
- 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情
从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU 首先是「输入 U ...
- 输入URL到浏览器显示页面的过程,搜集各方面资料总结一下
面试中经常会被问到这个问题吧,唉,我最开始被问到的时候也就能大概说一些流程.被问得多了,自己就想去找找这个问题的全面回答,于是乎搜了很多资料和网上的文章,根据那些文章写一个总结. 写得不好,或者有意见 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情?
从输入 URL 到浏览器接收的过程中发生了什么事情? What really happens when you navigate to a URL 上面两篇文章都解读的很好,值得阅读. 接下来在总结一 ...
随机推荐
- [USACO2007FEBS] Cow Party S
题目描述 寒假到了,\(n\) 头牛都要去参加一场在编号为 \(x\) 的牛的农场举行的派对,农场之间有 \(m\) 条有向路,每条路都有一定的长度. 每头牛参加完派对后都必须回家,无论是去参加派对还 ...
- JUC——让步与优先级
Thread.yield():方法作用是:暂停当前正在执行的线程对象(及放弃当前拥有的cup资源),并执行其他线程 yield():做的是让当前运行线程回到可运行的状态,以允许具有相同优先级的其他线程 ...
- Storm 集群的搭建及其Java编程进行简单统计计算
一.Storm集群构建 编写storm 与 zookeeper的yml文件 storm yml文件的编写 具体如下: version: '2' services: zookeeper1: image: ...
- 用Spring Boot 3.2虚拟线程搭建静态文件服务器有多快?
Spring Boot 3.2 于 2023 年 11 月大张旗鼓地发布,标志着 Java 开发领域的一个关键时刻.这一突破性的版本引入了一系列革命性的功能,包括: 虚拟线程:利用 Project L ...
- Pikachu漏洞靶场 敏感信息泄露
敏感信息泄露 概述 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如: 通过访问url下的目录,可以直接列出目录下的文件列表; 输入错误的url参数后报错信息里面 ...
- 一篇文章彻底搞懂TiDB集群各种容量计算方式
背景 TiDB 集群的监控面板里面有两个非常重要.且非常常用的指标,相信用了 TiDB 的都见过: Storage capacity:集群的总容量 Current storage size:集群当前已 ...
- 使用XDT提高开发效率
使用XDT提高开发效率 XDT介绍 XDT(XML Document Transformation)技术是一种用于对XML文档进行转换的技术.它通常用于在部署或配置过程中,根据不同的环境或条件自动修改 ...
- 文心一言 VS 讯飞星火 VS chatgpt (30)-- 算法导论5.2 2题
二.在 HIRE-ASSISTANT 中,假设应聘者以随机顺序出现,你正好雇用两次的概率是多少? 文心一言: 我们可以先计算出在HIRE-ASSISTANT中,雇佣一个应聘者的概率为3/4,然后计算出 ...
- HDU 4893 线段树延迟标记
原题链接 题意 初始有一长度为n,全为0的序列 每次我们可以对这个序列进行三种操作: 1.将某个位置的数加上d 2.输出某个区间的和 3.将某个区间内每个数字变为与其最接近的斐波那契数,如果有两个最相 ...
- 干货分享丨玩转物联网IoTDA服务系列六-恒温空调
摘要:本文主要讲述空调接入到物联网平台后,通过恒温空调控制系统,不论空调是否开机,都可以调整空调默认温度,待空调上电开机后,自动按默认温度调节. 场景简介 通过恒温控制系统,不论空调是否开机,都可以调 ...