问题:输入 URL 到页面渲染的整个流程

  1. DNS解析
  2. TCP握手
  3. TLS握手
  4. 浏览器开始解析文件
  5. 构建 DOM 树、构建 CSSOM 树、解析JS
  6. 生成 Render 树
  7. 调用 GPU 绘制,合成图层,将内容显示在屏幕上了

DNS 的作用就是通过域名查询到具体的 IP

因为 IP 存在数字和英文的组合(IPv6),很不利于人类记忆,所以就出现了域名。你可以把域名看成是某个 IP 的别名,DNS 就是去查询这个别名的真正名称是什么。

在 TCP 握手之前就已经进行了 DNS 查询,这个查询是操作系统自己做的。当你在浏览器中想访问www.google.com时,会进行一下操作:

  1. 操作系统会首先在本地缓存中查询 IP
  2. 没有的话会去系统配置的 DNS 服务器中查询
  3. 如果这时候还没有的话,会直接去 DNS 根服务器查询,这一步查询会找出负责com这个一级域名的服务器
  4. 然后去该服务器查询google这个二级域名
  5. 接下来三级域名的查询其实是我们配置的,你可以给www这个域名配置一个 IP,然后还可以给别的三级域名配置一个 IP

以上介绍的是 DNS 迭代查询,还有种是递归查询,区别就是前者是由客户端去做请求,后者是由系统配置的 DNS 服务器做请求,得到结果后将数据返回给客户端。

TCP握手

接下来是 TCP 握手,应用层会下发数据给传输层,这里 TCP 协议会指明两端的端口号,然后下发给网络层。网络层中的 IP 协议会确定 IP 地址,并且指示了数据传输中如何跳转路由器。然后包会再被封装到数据链路层的数据帧结构中,最后就是物理层面的传输了。在这一部分中,可以详细说下 TCP 的握手情况以及 TCP 的一些特性。

当 TCP 握手结束后就会进行 TLS 握手,然后就开始正式的传输数据。

TLS握手

数据在进入服务端之前,可能还会先经过负责负载均衡的服务器,它的作用就是将请求合理的分发到多台服务器上,这时假设服务端会响应一个 HTML 文件。

首先浏览器会判断状态码是什么,如果是 200 那就继续解析,如果 400 或 500 的话就会报错,如果 300 的话会进行重定向,这里会有个重定向计数器,避免过多次的重定向,超过次数也会报错。

浏览器开始解析文件

浏览器开始解析文件,如果是 gzip 格式的话会先解压一下,然后通过文件的编码格式知道该如何去解码文件。

构建 DOM 树、构建 CSSOM 树、解析JS

文件解码成功后会正式开始渲染流程,先会根据 HTML 构建 DOM 树,有 CSS 的话会去构建 CSSOM 树。如果遇到 script 标签的话,会判断是否存在 async 或者 defer ,前者会并行进行下载并执行 JS,后者会先下载文件,然后等待 HTML 解析完成后顺序执行

如果以上都没有,就会阻塞住渲染流程直到 JS 执行完毕。遇到文件下载的会去下载文件,这里如果使用 HTTP/2 协议的话会极大的提高多图的下载效率。

生成 Render 树

CSSOM 树和 DOM 树构建完成后会开始生成 Render 树,这一步就是确定页面元素的布局、样式等等诸多方面的东西

调用 GPU 绘制,合成图层,将内容显示在屏幕上了

在生成 Render 树的过程中,浏览器就开始调用 GPU 绘制,合成图层,将内容显示在屏幕上了。

浏览器 重定向次数限制_在浏览器输入URL到页面渲染的整个流程是如何的?都有哪些步骤?...相关推荐

  1. 输入 URL 到页面渲染的整个流程

    1.DNS解析,通过域名查询到具体的 IP 2.TCP三次握手(客户端向服务端发送连接请求报文段.服务端收到连接请求报文段后,如果同意连接,则会发送一个应答.当客户端收到连接同意的应答后,还要向服务端 ...

  2. 浏览器从输入URL到页面渲染过程 ——页面渲染流程

    之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程 ,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (一):浏览器从输入URL到页面渲染过程 -- ...

  3. 浏览器从输入URL到页面渲染过程 —— 浏览器的进程与线程

    之前我有总结过一篇经典面试题:浏览器从输入URL到页面渲染过程,接下里我将对某些知识点进行更细致的解析. 浏览器从输入URL到页面渲染过程 系列文章: (二):浏览器从输入URL到页面渲染过程 --页 ...

  4. url上接收到 el表达式 不渲染_一文摸透从输入URL到页面渲染的过程

    一文摸透从输入URL到页面渲染的过程 从输入URL到页面渲染需要Chrome浏览器的多个进程配合,所以我们先来谈谈现阶段Chrome浏览器的多进程架构. 一.Chrome架构 目前Chrome采用的是 ...

  5. 一文通透从输入URL到页面渲染的全过程----高频面试

    一文通透从输入URL到页面渲染的全过程----高频面试 喜欢大海 喜欢夕阳 写下便是永恒 文章目录 一文通透从输入URL到页面渲染的全过程----高频面试 重温 进程与线程 什么是进程 什么是线程 进 ...

  6. 浏览器 重定向次数限制_浏览器重定向(302)限制问题

    问题: 我今天收到反馈,说在IE8下退出存在问题,退出和跳转无法正常完成. 然后,我检查了问题的原因,发现退出接口使用跳转方法遍历白名单域名以退出所有域. 我在互联网上搜索了一下. 问题是什么?我了解 ...

  7. 从在浏览器中输入URL到页面渲染出来的完整过程是怎样的?

    从宏观上看,主要包括以下几个步骤:域名解析.建立连接.发送请求.响应数据.关闭连接.下面以在Chrome浏览器中输入https://yq.aliyun.com/articles/580962为例,讨论 ...

  8. 从输入URL到页面渲染完成 -戈多编程

    1.输入URL地址 2.浏览器根据域名查询IP地址 3.浏览器发送HTTP请求到web服务器 4.服务器返回一个永久重定向响应 5.浏览器会跟踪重定向地址 6.服务器处理请求 7.服务器返回一个HTM ...

  9. 【WEB】从输入URL到页面渲染完成

    一.整个流程 1.当打开一个空白标签页时,浏览器主线程接管,会新创建一个Renderer进程,输入URL按回车,浏览器会开辟一个网络请求线程用于网络请求. 2.进行DNS域名解析,IP寻址(解析.迭代 ...

最新文章

  1. C语言实现傅里叶变换函数dft,idft,fft,ifft
  2. Pytorch 网络结构可视化
  3. python做ui自动化_[python]RobotFramework自定义库实现UI自动化
  4. 如何提升研发人员的非技术才能
  5. 使用VC 2010制作和使用静态库
  6. bootstrap-switch 不起作用 class处显示代码_GTJ2018高频问题解答——第六弹:梁加腋箍筋显示、梁钢筋报表查看等问题...
  7. tensorflow tf.global_variables_initializer()(返回一个初始化全局变量的对象)
  8. 米莱狄机器人怎么那么多_王者荣耀排位遇到米莱狄太恶心?三大短板可以轻松克制!...
  9. 如何实现MindManager数据库导入数据连接
  10. 4.1 [单选]两化融合中的两化是指 - 关于两化融合(主讲:凌捷)笔记
  11. 如何利用nginx_upstream_check_module-master对nginx的后端机器进行健康状态检查
  12. 83年的我刚好今年遇到了失业
  13. JMeter工作基本原理
  14. Qt 绘制炫彩滚动文本
  15. 修改蒙特卡洛树搜索让人工智能像人类一样玩视频游戏
  16. LEDE+iKuai双软路由整合
  17. 高薪程序员面试题精讲系列54之你熟悉B树吗?有哪几种B树?
  18. Resilience4j简介
  19. mysql8设置局域网访问
  20. Active: inactive (dead)

热门文章

  1. 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
  2. [转载]一个图形爱好者的书架/白话说学计算机图形学
  3. 剑指offer——面试题41:和为S的连续整数序列
  4. 一道有意思的概率应用题
  5. 【Luogu4921】情侣?给我烧了!(组合计数)
  6. 设计模式第四篇-工厂模式
  7. C++笔记(2018/2/7)
  8. 如何判断JavaScript数据具体类型
  9. Angularjs-项目搭建
  10. Android开发遇到的异常及解决办法