共计 1255 个字符,预计需要花费 4 分钟才能阅读完成。
大抵流程
- URL 解析
- DNS 查问
- TCP 连贯
- 解决申请
- 承受响应
- 渲染页面
集体了解分为以下几步:
● 浏览器每次拜访网站,会在浏览器本地生成缓存,当用户第二次去拜访时,会检测到相应缓存,间接进行拜访。
● 如果浏览器没有查看到缓存,那么就会去拜访零碎缓存(也就是咱们说的 Hosts)。
● 如果本地也没有缓存,那么浏览器就会去检测路由器缓存,进而再查看 ISP(运营商)缓存。
● 如果以上缓存都没有找到需要资源,浏览器则会在根域名服务器查找对应的 IP 地址,并进行拜访。
一、大抵流程图
三次握手
建设 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 次挥手
客户端收到客户端的终止申请后,终止期待,并向服务器发送了一个确认敞开的信息。此时断开连接
● 浏览器解析 HTML 并渲染文档树建设,浏览器解析 HTML 并开始渲染 DOM,应用浏览器渲染机制,页面渲染实现
● 浏览器渲染机制,浏览器将 HTML 解析成树形的数据结构,简称 DOM 树,将 css 解析成树形的数据结构,简称 cssDom 树两种书进行合并后生成 render Tree(渲染树)
● layout 是通过计算 render Tree 的每个节点的具体位置,通过显卡将 layout 的节点内容别离出现到屏幕上这个过程可能会引起重绘和回流
● 重绘和回流回流必定会引起重绘,重绘不肯定会引起回流,回流对我的构造发生变化,引起了重绘,扭转款式,色彩不会对我的构造发生变化
优化:
缩小对渲染树 (render tree) 的操作,合并屡次多 DOM 和款式的批改,缩小对一些 style 信息的申请,利用好浏览器的优化策略。