从输入URL到页面呈现

news2024/10/6 22:28:44

在这里插入图片描述

1、url解析

1、1地址解析

地址解析
http和tcp的关系

  • tcp:传输通道
  • http:传输协议
  • https:比http多了ssl或者tsl(证书验证)
  • ftp:大文件传输

客户端与服务器直接传送数据,http相当于快递小哥,tcp相当于送‘快递’的‘路’

1、2编码

问号传参方式可能会传递一些中文或者把一个地址作为参数传递过去

  • encodeURI decodeURI 中文空格编码 对整个url编码
  • encodeURIComponent decodeURIComponent 对url中的url编码

2、缓存检查

2.1缓存位置

  • memory cache:内存缓存,页面关闭就没有了
  • disk cache:硬盘缓存,只要不清除系统或者不过期就一直存在
    一般js图片等文件解析后直接存入内存中;而css文件则是存在硬盘文件中

打开网页: 查找 disk cache 中是否有匹配,如有则使用,如没有则发送网络请求

  • 普通刷新(F5):因TAB没关闭,因此memory cache是可用的,会被优先使用,其次才是disk cache
  • 强制刷新 (Ctrl + F5):浏览器不使用缓存,因此发送的请求头部均带有 Cache-control: no-cache,服务器直接返回 200 和最新内容

2.2强缓存和协商缓存

先检查是否存在强缓存,有且未失效,走强缓存
没有或者失效 再检查是否存在协商缓存,有则走协商缓存
没有 获取最新数据

2.2.1强缓存(Expires/ Cache-Control)

浏览器对于强缓存的处理: 根据第一次请求资源时返回的响应头来确定的

  • Expires:缓存过期时间,用来指定资源到期的时间(HTTP/1.0)
  • Cache-Control: cache-contro: max-age-2592000第一次拿到资源后的2592000秒内30天,再次发送请求,读取存中的信息HITP/1.1
  • 两者同时存在的话,Cache-Control优先级高于Expires
    在这里插入图片描述
    强缓存问题:如果服务器文件更新了,但是本地还是有缓存的,这样就拿不到最新的信息了
    html一般不做强缓存,为了保证html每次请求都是正常的http请求
  • 解决方案1:服务器更新资源后,更改资源名称,这样页面导入的是新资源 webpack hash name就是为了解决这个问题
  • 解决方案2:当文件更新后,再html导入时,设置一个后缀(时间戳)
  • 解决方案3:协商缓存

2.2.2 协商缓存(Last-Modified/ETag)

协商缓存就是强制缓存失效后,浏览器携带缓存表示向服务器发起请求,由服务器根据缓存表示决定是否使用缓存的过程

协商缓存不管有没有缓存都携带缓存标识发起请求,由服务器判断是继续使用缓存文件还是获取新的数据

  • 第一次发起请求,不携带标识,服务器收到请求准备内容:last-modified(资源文件的最后更新时间)、ETag:(一个标识,根据资源文件更新生成的,每一次资源更新都会重新生成一个ETag)
  • 第二次发起请求,If-Modified-Since=Last-Modified,If-None-Match=Etag,对比这两个值,一致则返回304,代表资源无更新,可继续使用缓存文件,不一致则重新返回资源文件,状态码为200。
    在这里插入图片描述

2.3数据缓存

在这里插入图片描述

3、dns解析

域名找不到服务器,外网ip才能找到服务器,所以需要dns解析
dns也是有缓存的,如果之前解析过,会在本地有缓存(不一定,有周期会消失)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

dns性能优化:
减少dns请求,一个页面中少用不同的域名,或者资源都放在相同的服务器上
项目上不会这样,项目中会把不同的资源放在不同的服务器上(web服务器、数据服务器、音视频服务器、第三方服务器)
虽然增加了dns解析的时间,但是实现了资源合理利用:每个服务器承受的压力不同,服务器分布式、服务器集群共享,高可用高并发。http同一个源同时发送4-7个,也可以提高http的请求

由于拆分的多,可以使用dns预获取

4、TCP三次握手

建立连接通道

  • seg序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记
  • ack确认序号,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1
  • 标志位
    • ACK:确认序号有效。
    • RST:重置连接
    • SYN:发起一个新连接
    • FIN:释放一个连接

在这里插入图片描述

为什么是三次:既要保证数据的可靠传输 又要提高传输效率

5、数据传输

在这里插入图片描述

6、tcp四次挥手

客户端与服务器建立好连接通道之后,客户端把数据传递给服务器,开始发送释放tcp的操作服务器拿到标识后返回给客户端信息 回馈、准备数据给客户端的数据,由于准备数据的时间比较长,所以分两次传递回去
在这里插入图片描述
在这里插入图片描述

7、页面渲染

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

openGauss学习笔记-12 openGauss 简单数据管理-UPDATE语句

文章目录 openGauss学习笔记-12 openGauss 简单数据管理-UPDATE语句12.1 语法格式12.2 参数说明12.3 示例 openGauss学习笔记-12 openGauss 简单数据管理-UPDATE语句 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可…

【自动化测试验证码处理】如何跳过验证码,直接自动登录呢?

在日常的测试过程中避免不了要遇到登录的测试,但是在登录时又常常遇到验证码,那么该如何跳过验证码,直接自动登录呢? 当前在市面上比较流行的方式有: (1)直接跳过验证码(测试环境中…

快7月底了,让我康康有多少准备跳槽的

前两天跟朋友感慨,今年的铜三铁四、裁员、疫情影响导致好多人都没拿到offer!现在已经快7月底了,具体金九银十只剩下2个月。 对于想跳槽的职场人来说,绝对要从现在开始做准备了。这时候,很多高薪技术岗、管理岗的缺口和市场需求也…

Principle Component Analysis

简述PCA的计算过程 输入:数据集X={x1,x2,...,xn},需降到k维 ① 去中心化(去均值,即每个特征减去各自的均值) ② 计算协方差矩阵1/nX*X^T(1/n不影响特征向量) ③ 用特征值分解方法/SVD奇异值分解求解②协方差矩阵的特征值与特征向量 ④ 对特征值从大到小排序,选…

websocket发布到iis之后无法创建连接访问

在做websocket测试时在本地的服务可以正常访问,在调试成功之后发布到了iis中,发现无法连接,这时可能有以下几个原因。 WebSocket无法连接到IIS: IIS版本不支持WebSocket:IIS 8.0及更高版本才支持WebSocket&#xff0…

广西学子复读15年,不服从分配。网友:完全是浪费时间

广西学子复读15年,不服从分配。网友:完全是浪费时间 唐尚珺的复读行为引起了网友们的不同解读。有人认为他是一个执念深重的人,目标是考上清华北大,但这个说法是否真实,我们无法确定。无论如何,我们必须认识…

ThinkBook 14 G2-ARE(20VF)原厂Win10系统镜像

lenovo联想笔记本电脑ThinkBook 14 G2-ARE原装出厂系统(20VF)Windows10预装OEM系统 自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小:10.26GB 注&#x…

知识图谱推理的学习逻辑规则(上)

知识图谱推理的学习逻辑规则 摘要介绍相关工作模型知识图谱推理逻辑规则概率形式化参数化优化 实验实验设置实验结果 结论 原文: 摘要 本文研究了在知识图谱上进行推理的学习逻辑规则。 逻辑规则用于预测时提供了可解释性并且可以推广到其他任务中,因…

抖音矩阵系统源码:开发搭建与技术详解

一、 抖音矩阵系统源码开发概述 抖音短视频seo矩阵系统源码是一款在高速数据处理和分析方面表现卓越的系统。它结合了各种先进的技术,包括深度学习、大数据分析和可视化等,使得抖音在信息处理时更加高效和准确。 该系统源码的开发搭建需要多方面的技术支…

Revit中如何创建一个台阶梯?

拉伸作为族环境中最常用的工具之一,操作简单,用处十分巨大下面用一个台阶的创建步骤,带你们更加了解拉伸的使用。 新建一个族样板,选择公制常规模型,接下来我们要绘制一个类似于这样的简单台阶 首先绘制台阶侧旁的构件…

【JavaScript 03】语句 变量 变量提升 标识符 注释 区块 作用域 条件语句 循环语句 break continue 标签

CSS 语句变量变量提升标识符注释区块条件语句ifif...elseswitch三元运算符 ?: 循环语句whilefordo...whilebreak语句 and continue语句标签 语句 JS程序的执行单位是行(line) **语句(statement)**是为了完成特定任务而进行的操…

移动App安全检测的重要性,好用的App安全测试工具分享

一、移动App安全检测的重要性 在移动互联网时代,移动App成为人们生活不可或缺的一部分,人们使用App处理各种个人和敏感信息,因此保护用户的隐私和数据安全至关重要。而移动App安全检测是保障用户隐私和数据安全的重要环节。通过安全检测&…

WebRTC不同方案对比

1.功能上会有一些出入,尤其是国内的metaRTC版本迭代很快, 2.后续的ffmpeg也在进行支持webrtc特性,obs新的版本好像已经支持了webrtc, 3.对于webrtc部分缺少的信令部分的标准化也有了对应的标准whip和whep协议 所以,如…

网络爬虫-网易易盾滑块验证码

首先打开易盾官网,依次单击“在线体验”和“滑块拼图”选项,出现如下图所示的滑块验证码,滑动后发现Network面板成功抓包。 如图所示 其中主要的加密参数可以看出来就是acToken以及cb 我们接着下断点往下走 我通过上图可以看到 acToken&#…

stable-diffusion-webui 环境搭建(台式机GTX1060环境)

1、安装git用于克隆stable-diffusion-webui仓库 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 2、安装python 3.10.7 CNPM Binaries Mirror 3、安装CUDA驱动 win x ->设备管理器 ->显示适配器 查看显卡版本 下载对应驱动Official Advance…

QT学习—【属于自己的】串口调试助手

文章目录 一、功能简介二、串口助手实现2.1 创建UI2.2 扫描可用串口2.3 配置波特率2.4 配置数据位2.5 配置停止位2.6 配置校验位2.7 打开/关闭串口2.8 刷新串口2.9 发送新行2.10 串口发送2.11 串口接收显示2.12 清空接收窗口2.13 定时发送2.14 固定窗口大小 三、总结3.1 将信号…

手把手教你搭建SpringCloud项目(八)集成Ribbon负载均衡器

一、Ribbon的简介 Ribbon是Neflix发布的开源项目,后由Spring Cloud开发团队封装于Spring Cloud中,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。功能是提供客户端的软件负载均衡算法和服务调用。Ribbon是一个基于HTTP…

DevOps概念及搭建全过程(Jenkins、Harbor、SonarQube、K8s)

DevOps入门及过程搭建 在如今互联网的格局下,抢占市场变得尤为重要,因此敏捷开发越来越被大家所推崇。于是,慢慢的有了DevOps这个概念,大致意思是开发-运维一体化。 1 DevOps概念 1.1 基本概念 可以看到上图是一个无穷大的一个符…

[SQL系列] 从头开始学PostgreSQL Union Null 别名 触发器

初级的操作就是CRUD,但是高级的操作也是CRUD,只是语句写的更加复杂,不再是select * from table;这样简单,这次咱们学一些稍微高级点的。下面是上一篇文章。 [SQL系列] 从头开始学PostgreSQL 约束连接_Edward.W的博客-…

19c环境创建job报时间格式不对

有项目经理反馈,在19c环境中,创建job报错时间格式不对,报错如下: 解决办法: 在19c环境下,使用 sys.dbms_scheduler.create_job 12c以后 job其实底层还是调用sys.dbms_scheduler.create_job 从ORACLE 19C…