URL从输入到⻚面显示的过程(详细版)

news2024/9/30 21:42:42

URL从输入到⻚面显示的过程(详细版)

  1. 浏览器中输入网址

  2. DNS 解析域名得到 IP 地址
    DNS 解析首先会从你的浏览器的缓存中去寻找是否有这个网址对应的 IP 地址,如果没有就向OS系统的 DNS 缓存中寻找,如果没有就是路由器的 DNS 缓存, 如果没有就是 ISP 的DNS 缓存中寻找。 所以,缓存的寻找过程就是: 浏览器 -> 系统 -> 路由器 -> ISP。 如果在某一个缓存中找到的话,就直接跳到下一步。 如果都没有找到的话,就会向 ISP 或者公共的域名解析服务发起 DNS 查找请求。这个查找的过程还是一个递归查询的过程。

  3. 拿到IP地址,TCP 三次握手,建立连接

  4. 服务器建立连接之后,返回相应的资源,返回 html 等资源文件

  5. 浏览器解析 html 文件,渲染页面。具体过程是:

    5.1 浏览器会将HTML解析成一个DOM树,同时将CSS解析成 CSSOM 树

    5.2 然后再将这俩结合起来,形成 render tree

    5.3 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系。下一步进行布局处理阶段,即计算出每个节点在屏幕中的位置。

    5.4 分层:因为现在的页面功能越来越复杂了,如复杂的3d变换,页面滚动,或者只用了z-indexing做z轴排序的,为了更方便的实现这些效果,渲染引擎还需要为特点节点生成专用的图层,并且生成一颗对应的图层树.这些图层叠加在一起构成了页面图像; 一般是 拥有层叠上下文属性的元素被单独提升为一个层,或者 需要裁剪(clip)的地方也会被创建为图层

    5.5 图层树也创建好了之后,渲染引擎才会对图层树中的每个图层进行绘制,渲染引擎把一个图层的绘制分解成一个个小指令,把这些指令按照顺序组成一个待绘制表,图层绘制的输出就这个待绘制表,进入下一阶段

    5.6 栅格化:绘制列表只是用来记录绘制顺序和具体操作的列表,而绘制是由渲染引擎中的合成线程来完成的。
    合成线程按照视口附近的图块优先生成位图,生成位图的操作实际栅格化来执行的.所谓栅格化就是将图块转换为位图,图块是栅格化执行的最小单位.渲染进程维护了一个栅格化的线程池,所有的图块栅格化都是在线程池内进行,通常栅格化过程会有GPU加速生成,使用GPU生成位图的 过程叫做快速栅格化,或者GPU栅格化,生成的位图被保存在GPU内存中。所以这个部分的输出就是图块和位图信息.

  6. 合成和显示:一旦所有的图块都被光栅化,合成线程就会生成一个绘制图块的命令-‘drawQuad’,然后将该命令提交给浏览器进程.浏览器进程里面有一个viz的组件,用来接收合成线程发过来的绘制命令,然后根据这个命令将页面内容绘制到内存中,最后将内存显示在屏幕上.

简单总结

在这里插入图片描述

注意点

第一次确定节点的大小和位置称为布局,随后对节点大小和位置的重新计算称为重排(回流)



参考文章:
https://blog.csdn.net/abcsxc258/article/details/122269423
https://juejin.cn/post/6995936981351923748

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

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

相关文章

C++之 友元重载 以及最常用的几种友元函数

在之前的友元中就曾经讲过,我们为了去访问修改私有成员中的数据时,只能通过公有的办法去进行访问操作,非常的局限。所以C引用了友元函数,只要加上friend关键字,C的这个类,会自动把这个函数的权限拉到类内&a…

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗?今天小编就给大家推荐十个高清无水印视频素材下载的网站,如果你也是苦于下载高清无水印的短视频素材,赶紧来看看吧~ 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

编程魔法:基于LLM的AI function开发,如何实现高效数据生成?

基于大语言模型(LLM)的AI function开发,简直就是现代编程界的“魔法棒”! 你好,我是三桥君 最近三桥君有个任务,需要造一些测试数据,比如姓名、手机号、银行卡号、邮箱啥的,用来做测…

每日OJ题_牛客_添加逗号_模拟_C++_Java

目录 牛客_添加逗号_模拟 题目解析 C代码1 C代码2 Java代码 牛客_添加逗号_模拟 添加逗号_牛客题霸_牛客网 题目解析 读取输入:读取一行字符串。分割字符串:使用空格将字符串分割成单词数组。拼接字符串:将单词数组中的每个单词用逗号…

群晖安装Gitea(代码托管工具)

一、Gitea介绍 Gitea 是一款开源的轻量级代码托管平台,可以为团队和开发者提供了一个易于部署、运行快速、使用体验良好的自建 Git 服务。相比于其它自部署代码托管平台,Gitea 的设计更加轻量,对系统资源的占用相对较少,能够在较低配置的服务器上流畅运行。相比于其他代码…

嘉楠科技AI芯片K230-初探

勘智K230 介绍入门购买开发板 安装开机开发学习点亮第1个LED点亮屏幕预览摄像头代码离线运行 在线训练平台 参考 介绍 K230芯片是嘉楠科技 Kendryte系列AIoT芯片中的最新一代SoC产品。该芯片采用全新的多异构单元加速计算架构,集成了2个RISC-V高能效计算核心&#x…

Spring系列 BeanPostProcessor

文章目录 BeanPostProcessor注册时机执行时机 InstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessor 本文源码基于spring-beans-5.3.31 参考:https://docs.spring.io/spring-framework/reference/core/beans/factory-extension.html#beans…

【ASE】第四课_高亮显示效果(手动切换)

今天我们一起来学习ASE插件,希望各位点个关注,一起跟随我的步伐 今天我们来学习高亮的效果。 思路: 1.添加纹理贴图和法线贴图,环境光遮挡贴图 2.添加高亮的参数,并设置 3.手搓一个边缘光,通过高亮参数调节 4.将模…

微信小程序——音乐播放器

目的 掌握swiper组件、scroll-view组件的使用掌握image组件的使用掌握音频API的使用掌握slider组件的使用 内容 了音乐小程序项目的完整开发流程,其开发步骤包括页面结构的分析、样式的设计、组件的运用等。通过本章的学习,读者能够掌握小程序的基本交…

聚星文社——绘唐科技有什么区别!

聚星文社和绘唐科技是两个不同的公司,有一些区别。下面是它们的一些区别: 绘唐科技——聚星文社https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7nof 行业领域:聚星文社主要从事文化娱乐行业,包括出版、影视制作等&…

点餐小程序实战教程14点餐功能

目录 1 功能分析2 初始化菜品的数量3 加入购物车4 显示购物车5 最终的效果总结 上一篇我们讲解了如果通过扫码实现餐桌信息显示,本篇我们介绍一下点餐的功能。 1 功能分析 点餐的话一般我们是在菜品点击号或者-号来加入购物车,加入购物车之后还可以修改…

APP 安全测试项总结

一、安装包测试 1.1、关于反编译 目的是为了保护公司的知识产权和安全方面的考虑等,一些程序开发人员会在源码中硬编码一些敏感信息,如密码。而且若程序内部一些设计欠佳的逻辑,也可能隐含漏洞,一旦源码泄漏,安全隐患…

Temporal Dynamic Quantization for Diffusion Models阅读

文章目录 AbstractIntroductionBackgrounds and Related Works2.1 扩散模型2.2 量化2.3 量化感知训练和训练后量化 TemporalDynamic Quantization3.1 量化方法3.2 扩散模型量化的挑战3.3 TDQ模块的实现3.4 工程细节时间步的频率编码TDQ模块的初始化 Experimental SetupResults5…

#git 问题failed to resolve head as a valid ref

问题如下: 解决方法: 1、运行 git fsck --full 可以查看具体error信息,一般都是head索引问题 2、.git\refs\heads\xxx(当前分支)txt编辑器打开显示乱码,而不是hash编码 3、在.git\logs\refs\heads\xxx&a…

如何评价 Python 语言的运行速度

Python 作为一门编程语言,其运行速度一直是业界讨论的焦点。它的简洁语法和广泛的应用使得它在开发过程中非常高效,然而,运行速度与一些更底层的编程语言相比存在一定的劣势。这是否是由于 Python 语法的简洁性所带来的代价?我们可…

心觉:自我暗示语“正确姿势”的科学解释

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作185/1000天 “如何重塑高效学习的潜意识”这个系列文章其实昨天已经写完了 在写这个系列文章的时候,我突然有一个关于…

宠物空气净化器该怎么选?希喂、美的、有哈这三款有推荐的吗?

终于要到国庆了,这可是打工人除春节外最长的假期!在外上班后,回家的次数越来越少了,这次国庆肯定要回去陪陪父母。这票是真难买啊,候补了我一个多星期才买到。本来以为最困难的问题已经解决了,又想到我家猫…

Mamba以及我们看的第一篇MambaOcc

0. 简介 深度学习架构有很多,但近些年最成功的莫过于 Transformer,其已经在多个应用领域确立了自己的主导地位。如此成功的一大关键推动力是注意力机制,这能让基于 Transformer 的模型关注与输入序列相关的部分,实现更好的上下文…

动手测试:CPU的L1~L3级缓存和内存的读取速度测试

引言 在许多文章中指出了这些缓存的架构,速度差异等。纸上得来终觉浅,今天想实际写代码简单测试一下。 背景 现代计算机系统中,CPU缓存(L1、L2、L3)和主内存(RAM)之间的读取速度有着显著的差…

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实…