浏览器的工作原理 - 从输入URL 按下回车到页面展示过程发生了什么?

本文带大家一起了解一下从我们输入一个网址链接开始到页面展示在我们面前,整个浏览器发生了什么?或者说浏览器做了哪些事,咱们以大家常用的baidu.com为例,从输入到 baidu.com 页面出现的整个流程

第一步:地址栏中敲击第一个按键 ‘B’

当你输入了字母 ‘b’ ,此时你会发现地址栏下方出现了网址提醒,如下图所示
在这里插入图片描述
这是因为浏览器根据自己的算法优先考虑根据你的搜索历史和书签等内容给出建议。

第二步:按下回车键 开始等待

2.1解析URL

通过 URL 浏览器能够判断请求类型是网址还是搜索关键字
首先判断 输入内容的 协议和主机名 ,URL的组成如下:

  1. 协议(http、https、ftp 等请求协议); - https://
  2. 服务地址(域名 或者 IP地址+[端口号]); - www.baidu.com
  3. 资源路径 - / 表示根路径
  4. 文件名 - index.html 根路径下的 index.html 文件
    实例: https://www.baidu.com/index.html
    当输入内容不符合上述规范的时候,浏览器会将输入内容直接交给默认的搜索引擎进行处理
    当输入内容符合上述规范的时候,会将 URL 进行进一步的处理,判断 URL 中有没有非 ASCII 的字符,比如我们常见的汉字或者特殊符号,会被转换为 Unicode 字符

2.2 DNS查询

  1. 浏览器检查 URL中的域名是否在缓存中,如果缓存中没有就调用 获取主机名 的库函数进行查询;
  2. 在试图进行 DSN 解析之前,首先检查本地 hosts 文件中有没有,如果hosts 文件中也没有的话则会向 DNS 服务器发送一条 DNS(DNS 服务器是有网络通信站提供的,通常是 本地路由器或者 ISP 的缓存 DNS 服务器)查询请求,接下来就是 IP 寻址了,过程相对复杂,篇幅有限,可以自行查阅相关信息。寻址成功后建立 TCP 连接。建立完链接之后才能发起 HTTP 请求

2.3 HTTP 请求发起和响应

  1. 建立起安全的加密信道后,浏览器开始发送 HTTP 请求,HTTP 请求报文由 请求行、请求头、空行、实体(如果是 GET 请求则没有)组成。具体的大家可以查阅一下 HTTP 请求报文的构成。
  2. 服务器端处理请求/响应,返回一个响应码,指示这次请求的状态,以及返回请求资源信息。

2.4 浏览器解析资源

当服务器提供了资源之后(HTML、CSS、JS 、图片等),会执行如下操作:

  1. 解析 HTML、CSS、JS
  2. 渲染 构建DOM树 - 渲染 - 布局 - 绘制

2.4.1 HTML 解析

浏览器渲染引擎把获取到的 HTML 文档进行解析生成 DOM 树。每个浏览器的解析算法可能不同,但是解析标准都是按照 web 标准 HTML5 等标准规范进行标记化和树的构建。
解析完成后开始加载网页的外部资源(CSS、图像、JS 文件等)

2.4.2 CSS 解析

根据 CSS 词法和语法分析 CSS 文件 和 style 标签包含的内容以及属性的值,每个 CSS 文件都被解析成一个样式表对象。生成一个 CSS Rule Tree。

2.4.3 页面渲染

  1. 通过遍历 DOM节点树,并计算每个节点的 CSS 样式值,进行计算元素的位置,宽高,内外边距等样式自底向上计算每个节点的尺寸,构建每个节点的坐标,当出现浮动或者定位元素的时候会有更多复杂的计算;
  2. GPU 渲染,图形处理层通用用途的CPU,也可能使用图形处理器GPU。

2.4.4 JavaScript 引擎

专门处理 JavaScript 脚本的虚拟机,其作用是 解析 JS 代码并把逻辑(HTML 和 CSS的操作)应用到DOM 元素中,从而呈现相应的结果。

2.4.5 rendTree 渲染树

是浏览器引擎通过 DOM 树和 CSS Rule Tree 构建出来的一个 树状结构,和 DOM 树不一样的是,它只要最终输出呈现的内容,display 为 none 的不会存在 rendTree 中。
重排:当rendTree 中任一节点几何尺寸发生变化,rendtree 就会重新布局,叫重排;
重绘:当 rendTree 中任一元素的样式属性(几何属性没变)发生变化,rendTree 就会重新画一下样式,比如文字颜色、背景等发生变化,这个过程叫重绘。
浏览器最终渲染的内容就是 rendTree 的展现结果

第三步:你看到了返回的页面展示

至此,浏览器已经把你的请求处理完了。

参考资料:
了解浏览器架构
浏览器工作原理
当···时发生了什么?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292531.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm家具销售库存管理信息系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本家具销售库存管理信息系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的…

Ubuntu 常用命令之 clear 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 clear命令在Ubuntu系统下用于清除终端屏幕的内容。这个命令没有任何参数,它的主要作用就是清理终端屏幕上的所有信息,使得屏幕看起来像是新打开的一样。 使用clear命令非常简单,只需要在终端中…

大疆又出新品:户外电源

大疆创新最近发布了两款强大的户外电源:DJI Power 1000 和 DJI Power 500。这两款产品都具有高效储能、便携易用、安全放心、续航强大等优势,让你在户外探险时拥有更多可能性。 DJI Power 1000 电池容量:1024 瓦时(约 1 度电&…

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念: 线程就是一…

Unresolved plugin: ‘org.apache.maven.plugins‘解决报错

新建springboot项目报Unresolved plugin: ‘org.apache.maven.plugins:maven-surefire-plugin:3.1.2’ 缺什么插件 引入什么插件的依赖就行 <dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifact…

基于ssm高校学生管理系统论文

摘 要 使用旧方法对校园活动信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在校园活动信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的高校学生管理系…

js执行机制

同步任务 同步任务都在主线程上执行&#xff0c;形成一个执行栈&#xff0c;程序执行的时候&#xff0c;按照顺序依次执行 异步任务 异步任务是通过回调函数实现的&#xff0c;程序执行的时候&#xff0c;程序会调过某个步骤继续向下执行 事件循环 描述了计算机在执行js时…

SpringIOC之BeanFactoryResolver

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

阻塞 IO(BIO)

文章目录 阻塞 IO(BIO)模型等待队列头init_waitqueue_headDECLARE_WAIT_QUEUE_HEAD 等待队列项使用方法驱动程序应用程序模块使用参考 阻塞 IO(BIO) 模型 等待队列是内核实现阻塞和唤醒的内核机制。 等待队列以循环链表为基础结构&#xff0c;链表头和链表项分别为等待队列头和…

【linux】用grep或者pgrep查找进程ID

一、用grep ps aux|grep 字符串|awk {print $2} 像上面这样运行&#xff0c;还会同时显示grep的进程ID。 需要再添加grep的反向查找命令&#xff0c;即查找不含有 "grep" 字段的行&#xff1a;grep -v grep。 ps aux | grep 字符串 | grep -v grep | awk {print …

高级算法设计与分析(七) -- 概率算法和NP完全性理论

系列文章目录 高级算法设计与分析&#xff08;一&#xff09; -- 算法引论 高级算法设计与分析&#xff08;二&#xff09; -- 递归与分治策略 高级算法设计与分析&#xff08;三&#xff09; -- 动态规划 高级算法设计与分析&#xff08;四&#xff09; -- 贪心算法 高级…

Instagram账号被封?必须了解的原因与防封技巧

您是否曾因 Instagram 帐户被暂停封禁而感到沮丧&#xff1f;这是一个常见问题&#xff0c;了解您的帐户被暂停的原因以及如何恢复帐户至关重要。 在本文中&#xff0c;我们将深入探讨 Instagram 帐户被封停的常见原因&#xff0c;并探讨重新获得访问权限的步骤。这个方法对于管…