zoukankan      html  css  js  c++  java
  • 说一说从输入URL到页面呈现都发生了什么?

    从你在浏览器输出了一串地址开始,到浏览器呈现页面给你,中间一共都经历了什么?

    第一步,执行dns解析

    1. 去chrome浏览器缓存去寻找dns所对应的ip。查看dns:chrome://net-internals/#dns 。
    2. 去操作系统缓存里寻找ip
    3. 去本机hosts文件里寻找ip

    第二步,询问宽带运营商

    如果前三步都获取不到的时候,进入第二步,浏览器去请求宽带运营商提供的dns解析请求。

    第三步,准备发送

    拿到目标ip后,浏览器某端口发起的HTTP报文经过在传输层(TCP协议)对收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。

    第四步,发起请求

    浏览器某端口发起的tcp请求经过层层路由最后到服务器端的网卡,服务器端链路层收到数据后,按照链路层一直到应用层顺序往上发送。一共三次握手。当到了应用层的时候才算建立了链接,真正收到了客户端发送过来的HTTP请求。

    第五步,浏览器解析

    浏览器接收到服务器传回的报文,通常是一个html的文本,开始解析其 html。

    • 浏览器并行发起请求去获取 html 所需要的其他静态资源,
    • 并逐行读取 html 标签。
    • 标签和样式一起构成 CSSOM 对象
    • layout 计算每个元素在页面中的位置
    • painting 利用 GPU 完成渲染

    中间如果读取到 js 或者其他 css 浏览器都将暂停读取 html,而开始执行并重复上面 3 到 5 的步骤。

    到此,你的浏览器就正确的渲染出了页面。

  • 相关阅读:
    spring注解事务管理
    Spring切入点表达式常用写法
    JPA和事务管理
    maven仓库
    struts2拦截器
    js中 转义字符
    jquery中变量加$和不加$有什么区别!
    spring大乱炖
    第一章 java多线程
    CS:APP 05 笔记
  • 原文地址:https://www.cnblogs.com/everlose/p/12779672.html
Copyright © 2011-2022 走看看