IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 输入 url 到页面渲染完成的过程 -> 正文阅读

[网络协议]输入 url 到页面渲染完成的过程

用户从输入 url 到页面渲染完成, 之间发生了什么?
url 解析 => dns 解析 => tcp 连接 => 反向代理 => http 连接 => 缓存 => html + css => render tree => 遍历可见节点, 根据规则, 计算位置, 大小 => 绘制

url 解析

输入 url , 会进行 url 的解析, 如果是 http 协议, 浏览器会新建一个网络请求线程去下载所需资源

DNS 解析: 将 host 字段转化为网络中具体的 IP 地址 (服务器在网络中的 " 门牌号")

查询缓存: 浏览器自身的 DNS 缓存 => 系统自身的 DNS 缓存 => 系统的 hosts 文件 => 本地域名服务器 => 根域名服务器 => COM 顶级域名服务器 => 权限域名服务器


通过 DNS 解析获取到目标服务器 IP 地址后, 建立网络连接进行资源的请求与响应

网络模型: 可以使网络通信更加灵活

但在数据连接传输之前, 需要建立好客户端与服务端之间的连接 即 TCP 连接 三次握手, 四次挥手

三次握手
两个都会发一个随机数, 对方收到后, 将随机数 + 1, 返还给对方, 让其进行确认, 中间穿插些标识

四次挥手

请求断开; 客户端确认应答; 服务端没数据发了, 服务端确认应答; 请求断开连接


建立 TCP 连接之后, 便可通过 HTTP 等协议进行前后端的通信

通常, 单一服务器难以满足需求, 于是, 将多个服务器组成集群, 然后由反向代理服务器提供给客户端用户使用, 优点: 负载均衡, 安全, 解决跨域

HTTP 在 1.0 时使用的是短连接, HTTP 操作后任务结束后会断开连接

1.1 之后, 默认使用长连接 请求头中有个字段 connection: keep-alive

HTTP 2.0 之后, 一个 TCP 连接上可以请求多个资源

服务器可对客户端的一个请求发出多个响应(实现主动推送) ; HTTP 头部压缩, 减少体积


前后端交互中, 使用缓存可以提高性能

强缓存: 本地缓存未过期, 直接读取本地缓存 1.1 cache-control: max-age

协商缓存: 向服务器发起 http 请求 判断本地缓存是否发生修改, 未修改, 返回状态码 304

判断头部 if-none-match 与服务器的 etag 是否匹配


关键路径渲染

从服务器获取到所访问的页面文件后, 如何将文件内容渲染出来?

HTML 文件: 展示文档的内容
原始字节 = 解析 > 对应字符串 = tokens 化 > tokens = 生成 nodes > nodes = 生成 dom > dom
css : 文档对象对应的样式

接下来, 将两个对象合并为渲染树

步骤: 遍历可见节点, 找到其对应规则, 计算具体位置和大小, 绘制为屏幕上实际像素

渲染完成后, 如果 dom 结果发生变化, 整个渲染过程就会重新执行一遍

来自 田佳奇 - Web 前端性能优化 - 第 2 章 前端页面生命周期

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:30:49  更:2022-03-21 21:34:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:40:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码