浏览器从输入url到渲染的过程

  1. URL 解析:
    当用户在浏览器地址栏输入 URL 时,浏览器会首先对 URL 进行解析。这个过程包括解析协议(如 HTTP、HTTPS)、域名、端口号和路径等信息。

  2. DNS 解析:
    把从输入的URL中解析出的域名发送给 DNS 服务器进行解析,以获取该域名对应的 IP 地址。如果 DNS 缓存中有对应的记录,则会直接返回 IP 地址;否则,DNS 解析器会向上级 DNS 服务器发送请求,直到找到目标域名的 IP 地址为止。

  3. 建立 TCP 连接:
    浏览器通过解析得到的 IP 地址,使用 HTTP 协议向服务器发送一个 TCP 连接请求。在建立 TCP 连接的过程中,浏览器会执行三次握手,确保与服务器之间的可靠连接。

  4. 发送 HTTP 请求:
    一旦建立了 TCP 连接,浏览器就会向服务器发送 HTTP 请求。这个请求中包含了用户请求的资源信息,如请求方法(GET、POST 等)、请求头、Cookies 等。

  5. 服务器处理请求:
    服务器接收到浏览器发送的 HTTP 请求后,会根据请求的内容进行处理。这个过程包括读取请求头、执行服务器端代码(如 PHP、Python、Node.js 等)、访问数据库等操作。

  6. 服务器返回响应:
    服务器处理完请求后,会生成一个 HTTP 响应,并将响应发送回浏览器。这个响应包含了请求的资源(如 HTML 文件、CSS 文件、JavaScript 文件、图片等)以及响应头信息。

  7. 接收响应数据:
    浏览器接收到服务器返回的 HTTP 响应后,会开始接收响应的数据。这个过程涉及到 TCP 协议的数据传输和分段重组。

  8. 解析 HTML:
    浏览器收到 HTML 文件后,会对其进行解析。这个过程包括构建 DOM 树、解析 CSS 和 JavaScript 文件的引用等操作。

  9. 构建 DOM 树:
    浏览器会根据 HTML 文件中的标签和元素构建 DOM 树(文档对象模型),这是页面结构的内存表示形式。

  10. 构建 CSSOM 树:
    浏览器会解析 CSS 文件,并构建 CSSOM 树(CSS 对象模型),这是样式信息的内存表示形式。

  11. 合并 DOM 和 CSSOM,生成 Render 树:
    浏览器会将 DOM 树和 CSSOM 树合并,生成一个 Render 树,这个 Render 树包含了每个节点的可见样式信息。

  12. 布局计算:
    浏览器根据 Render 树中的节点信息,进行布局计算。这个过程确定了每个节点在页面中的位置和大小。

  13. 绘制页面:
    浏览器根据布局计算得到的信息,使用渲染引擎将页面内容绘制到屏幕上。

  14. JavaScript 解析与执行:
    如果页面中包含了 JavaScript 代码,浏览器会解析并执行这些代码。JavaScript 的执行可能会修改 DOM 树、CSSOM 树或触发重新布局和重绘。

  15. 页面渲染完成:
    当所有的资源都被加载、解析和执行完成,并且页面内容已经被绘制到屏幕上时,页面渲染完成。

以上是浏览器从输入 URL 到页面渲染的主要过程,其中涉及到了网络通信、HTML 解析、CSS 解析、JavaScript 解析、页面布局和渲染等多个环节。

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

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

相关文章

方案分享 | 嵌入式指纹方案

随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域&#xff…

[dvwa] sql injection

sql injection 0x01 low sql语句没有过滤 经典注入,通过逻辑or为真相当于select * from users where true,99换成1也成 用union select 对齐列数,查看数据库信息 1’ union select 1,2# order by探测对齐列数更方便 1’ or 11 order b…

Python数据挖掘项目开发实战:处理作者归属问题

注意:本文下载的资源,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 Python数据挖掘项目开发实战:处理作者归属问题 一、项目背景与目标 在出版、科研等领域,确定…

05.MySQL索引事务

1. 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。 可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现 1.2 作用 数据库中的表、数据、索引之间的关系,类似于书架上的…

Spring AI 应用 - 智能记者

参考实现: https://github.com/mshumer/ai-journalist 上面是通过 Claude 配合 SERP 搜索 API,使用 Python 语言实现的,本文通过 GitHub Copilot 辅助改为了基于 Spring AI 的 Java 版本,本文使用的 OpenAI。 AIJournalist 实现…

Tomcat源码解析——源码环境搭建

一、源码下载 在进行源码阅读前,先下载源码包,这样便于做笔记和debug。 我所用的版本是Tomcat7.0.68, Tomcat7.0.68下载地址:Index of /dist/tomcat/tomcat-7/v7.0.68/src 所有Tomcat的源码包下载地址:Index of /dist/…

第6章:6.4.2 案例二:爬取成语网站数据 (MATLAB入门课程)

讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 本案例用到的网址为:成语大全列表成语大全列表https…

FFmpeg:自实现ijkplayer播放器--11音视频同步

文章目录 音视频同步时钟结构时间api实现过程音视频同步 音视频同步采用以音频为基准的方式,使用时间轴作为参考 如部分音频数据解不出来时,计算音频的pts(时间戳)与时间轴的差值,视频时间为差值加上时间轴,使得时间戳和音频一样 时间轴统是通过av_gettime_relative()获取…

c语言如何理解指针的指针?

1.啥叫指针? 在C语言中,指针是一个非常重要的概念。指针本质上是一个变量,它的值不是数据本身,而是存储数据的内存地址。指针允许程序直接访问和操作内存中的数据,这在很多情况下非常有用,比如在处理数组、…

NSA发布《在数据支柱中推进零信任成熟度》报告

4月9日,美国国家安全局(NSA)发布了题为《在数据支柱中推进零信任成熟度》的报告,旨在于数据安全层面提供指导,以增强数据整体安全性并保护静态和传输中的数据。(如下图) 一、主要内容 报告中的建议侧重于将…

企业电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

ChatGPT在线网页版

ChatGPT镜像 今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用ChatGPT吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像…

AcWing 897 最长公共子序列

给定两个长度分别为 NN 和 MM 的字符串 AA 和 BB,求既是 AA 的子序列又是 BB 的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 NN 和 MM。 第二行包含一个长度为 NN 的字符串,表示字符串 AA。 第三行包含一个长度为 MM 的字符串&…

Linux:Redis7.2.4的源码包部署(2)

本章使用的是centos9进行部署 1.获取rpm安装包 Index of /releases/ (redis.io)https://download.redis.io/releases/这个网站有历史的版本,我这里使用的是最新版7.2.4进行安装 点击即可进行下载 方进Linux中,如果你的Linux中可以直接使用wget去下载 2…

SQLite、MySQL 和 PostgreSQL 数据库速度比较(本文阐述时间很早比较,不具有最新参考性)(二十五)

返回:SQLite—系列文章目录 上一篇:用于 SQLite 的异步 I/O 模块(二十四) 下一篇:SQLite—系列文章目录 注意:本文档非常非常旧。它描述了速度比较 SQLite、MySQL 和 PostgreSQL 的古老版本。 这里…

系统架构最佳实践 -- 供应链系统架构

供应链系统是现代企业管理中不可或缺的一部分,它涉及到从原材料采购到产品销售的整个生产流程。一个高效的供应链系统可以帮助企业实现成本控制、库存优化和客户满意度提升等目标。在本文中,我们将讨论供应链系统的设计与实践。 一、供应链系统设计 业务…

程序员与资产的关系

资产最直接且有效的获取方式通常是通过购买。然而,优质的资产并不总是在市场上出售,即便有,我们也可能负担不起。 除了购买,其实还有一种逐渐被人遗忘的方式——那就是直接“创造资产”。对于许多传统行业的从业者来说&#xff0…

如何用 Python 批量循环读取 Excel ?

在使用 Python 批量处理 Excel 时经常需要批量读取数据,常见的方式是结合glob模块,可以实现将当前文件夹下的所有csv批量读取,并且合并到一个大的DataFrame中 df_list [] for file in glob.glob("*.csv"):df_list.append(pd.read…

【C++】List容器(1)-STL标准库-List举例说明-定义和初始化-成员函数的使用-运行效率对比-链接数据结构-和顺序表的对比

C学习:list容器详解(一) 1.STL标准库 C Standard Template Library(STL)是C编程语言的一个库,它提供了一系列模板化的数据结构(比如向量、列表、队列等)和算法(比如排序…

OpenAI的Whisper

由于篇幅限制,我将以概要形式介绍OpenAI的Whisper模型,并说明其是端到端模型,而非序列到序列模型。如需更详细的介绍,请查阅相关论文和官方文档。 OpenAI的Whisper模型介绍 Whisper是OpenAI发布的一个通用的语音识别模型&#x…