1

大致流程

  1. URL 解析
  2. DNS 查询
  3. TCP 连接
  4. 处理请求
  5. 接受响应
  6. 渲染页面

个人理解分为以下几步:

● 浏览器每次访问网站,会在浏览器本地生成缓存,当用户第二次去访问时,会检测到相应缓存,直接进行访问。

● 如果浏览器没有检查到缓存,那么就会去访问系统缓存(也就是我们说的Hosts)。

● 如果本地也没有缓存,那么浏览器就会去检测路由器缓存,进而再检查ISP(运营商)缓存。

● 如果以上缓存都没有找到需求资源,浏览器则会在根域名服务器查找对应的IP地址,并进行访问。

一、大致流程图

image
image

三次握手

建立DCP连接,获取到对应的IP后,客户端向HTTP服务器发起TCP连接

第一次握手:

建立连接时,客户端发送SYB + 1 (建立联机)包到服务器,进入等待状态(1表示成功,0表示失败)

第二次握手:

服务器收到SYN+1包后,确认信息,也返回一个ACK+1(确认联机)包,同时将这两个包返回给客户端,并进入等待状态

第三次握手:

客户端收到返回的两个包后,确认信息后,再给服务器发送一个ACK+1包,服务器收到后,进入TCP链接成功状态

● 发送HTTP请求与服务器建立连接后,就可以向服务器发起请求

● 服务器处理请求,服务器收到请求后,开始解析请求信息,通过相应的资源文件,处理用户请求和参数,并调用数据库信息,将结果返回给客户端。

● 返回响应数据在HTTP有请求就有响应,返回状态码。

状态码

101 继续请求,切换协议

200成功

201已创建新资源

202服务器已接收请求,但尚未处理

301重定向永久移动,请求的网页已移动到新的位置

302临时移动

303查看其它位置

304未修改,

404客户端错误,服务器无法解释请求的格式,请求的网页不存在

503常见的服务器端错误,服务器不可用

四次挥手

关闭TCP连接,为了避免客户端与服务器的资源占用和损耗,双方没有请求或响应传递时,任意一方都可以发起关闭请求。

第1次挥手

本来是建立状态,客户端向服务器发起终止的请求后,进入等待状态

第2次挥手

服务器收到发送来的请求,先回复一个确认的信息,

第3次挥手

将所有的数据传送完之后,向客户端发一个终止的请求,进入关闭等待的状态

第4次挥手

客户端收到客户端的终止请求后,终止等待,并向服务器发送了一个确认关闭的信息。此时断开连接
image
● 浏览器解析HTML并渲染文档树建立,浏览器解析HTML并开始渲染DOM,使用浏览器渲染机制,页面渲染完成

● 浏览器渲染机制,浏览器将HTML解析成树形的数据结构,简称DOM树,将css解析成树形的数据结构,简称cssDom树两种书进行合并后生成render Tree(渲染树)

● layout是通过计算render Tree的每个节点的具体位置,通过显卡将layout的节点内容分别呈现到屏幕上这个过程可能会引起重绘和回流

● 重绘和回流回流必定会引起重绘,重绘不一定会引起回流,回流对我的结构发生变化,引起了重绘,改变样式,颜色不会对我的结构发生变化

优化:

减少对渲染树(render tree)的操作,合并多次多DOM和样式的修改,减少对一些style信息的请求,利用好浏览器的优化策略。


lucky_qi
29 声望0 粉丝