zoukankan      html  css  js  c++  java
  • 从输入URL到页面加载发生了什么

    总体来说可以分为以下几个过程:

    1.DNS解析;

    2.TCP连接;

    3.发送HTTP请求;

    4.服务器处理请求并返回HTTP报文;

    5.浏览器解析渲染页面;

    6.连接结束;

    具体过程分析:

    DNS解析

    DNS解析的过程就是寻找哪台机器上有你需要资源的过程,实现了由网址都ip地址的转换。互联网上每一台计算机都有唯一的标识:ip地址,但是ip地址记忆并不方便,用户更喜欢去根据网址来寻找,所以DNS可以来进行转换。

    TCP连接

    http协议是使用TCP作为传输层协议的,当TCP出现瓶颈时,HTTP也会受到影响;使用三次握手建立连接。

    TCP三次握手过程如下所示:

    1.客户端发送SYN(seq=x)报文给服务器端,进入SYN_SEND状态;

    2.服务器端接受到SYN报文,回应一个SYN(seq=y)ACK(ACK=X+1)报文,进入SYN-RECV状态。

    3.客户端收到服务器端的SYN报文,回应一个ACK(ACK=Y+1)报文;

    三次握手完成,TCP客户端和服务器端成功建立连接。

    HTTP请求

    主要发生在客户端,发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议中发送到服务器指定端口,HTTP请求报文由三部分组成:请求行、请求报头和请求正文。

    服务器处理请求并返回HTTP报文

    后端从在固定的端口接受到TCP报文开始,这一部分对应于编程语言中的socket。它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用,http响应报文也有三个部分组成:状态码、响应报头、响应报文。

    状态码:

    状态码由三位数字组成,第一个数字定义了响应的类别,具有五种可能取值:

    1xx:指示信息--表示请求已接受,继续处理;

    2xx:成功--表示请求已被成功接收、理解接受;

    3xx:重定向--要完成请求必须要进行进一步操作;

    4xx:客户端错误--请求有语法错误或请求无法实现;

    5xx:服务器端错误--服务器端未能实现合法的请求。

    浏览器解析渲染页面

    浏览器在收到HTMLCSSJS文件后,首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制在屏幕上。这个过程设计到reflow(回流)和repain(重绘);

    回流:DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器计算其位置和大小等,这个过程称为回流;

    重绘:当盒模型的位置、大小以及其它属性,如颜色、字体、等确定下来后,浏览器便开始绘制内容,这个过程称为重绘;

    页面在首次加载时必然会经历回流和重绘。

    js解析是由浏览器中js解析引擎完成的,js是单线程运行,也就是说一个时间只能做一件事,所有的任务需要排队;js的执行机制可以看成是一个主线程加上一个任务队列。同步任务就是放在主线程上的任务,异步任务就是放在队列中的任务。

  • 相关阅读:
    [Unity3D]计时器/Timer
    unity缓存和浏览器缓存
    unity3d进行脚本资源打包加载
    Unity3d删除无用的美术资源
    项目经理的职责(转载)
    LINQ
    生意经
    Android ListView标题置顶效果实现
    ListView的自动循环滚动显示
    郭霖的专栏
  • 原文地址:https://www.cnblogs.com/LYliangying/p/9588070.html
Copyright © 2011-2022 走看看