美文网首页
从地址栏输入URL到页面加载显示的过程分析

从地址栏输入URL到页面加载显示的过程分析

作者: 赵碧菡 | 来源:发表于2017-07-05 16:29 被阅读0次
    • DNS域名解析
    • TCP建立连接
    • 发送HTTP请求
    • 服务器处理请求返回HTTP报文
    • 浏览器解析渲染页面
    • 关闭连接

    总体来说就以上几个过程,<b >具体如下:</b>


    DNS域名解析

    DNS域名解析过程就是寻找那台机器上有你所需要资源的过程。当我们在浏览器中输入一个地址时,这个域名并不是资源所在的真实位置,域名只是与IP地址的一个映射。互联网上每一台计算机的唯一标识是它的IP地址,但是IP地址并不方便记忆,用户更喜欢用方便记忆的网址去寻找互联网上的其它计算机。

    TCP连接

    在通过第一步的DNS域名解析后,获取到了服务器的IP地址,在获取到IP地址后,便会开始建立一次连接,这是由TCP协议完成的,主要通过三次握手进行连接。

    发送HTTP请求

    在确认与服务器建立连接后,便会发送一个HTTP请求,HTTP请求的报文主要包括请求行,请求头,请求正文。

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

    服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。
    服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。

    浏览器解析渲染页面

    浏览器是一个边解析边渲染的过程。首先浏览器解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。这个过程比较复杂,涉及到两个概念: reflow(回流)和repain(重绘)。DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等,这个过程称为relow;当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容,这个过程称为repain。页面在首次加载时必然会经历reflow和repain。reflow和repain过程是非常消耗性能的,尤其是在移动设备上,它会破坏用户体验,有时会造成页面卡顿。所以我们应该尽可能少的减少reflow和repain。

    JS的解析是由浏览器中的JS解析引擎完成的。JS是单线程运行,也就是说,在同一个时间内只能做一件事,所有的任务都需要排队,前一个任务结束,后一个任务才能开始。

    浏览器在解析过程中,如果遇到请求外部资源时,如图像,iconfont,JS等。浏览器将重复1-6过程下载该资源。请求过程是异步的,并不会影响HTML文档进行加载,但是当文档加载过程中遇到JS文件,HTML文档会挂起渲染过程,不仅要等到文档中JS文件加载完毕还要等待解析执行完毕,才会继续HTML的渲染过程。原因是因为JS有可能修改DOM结构,这就意味着JS执行完成前,后续所有资源的下载是没有必要的,这就是JS阻塞后续资源下载的根本原因。CSS文件的加载不影响JS文件的加载,但是却影响JS文件的执行。JS代码执行前浏览器必须保证CSS文件已经下载并加载完毕。

    相关文章

      网友评论

          本文标题:从地址栏输入URL到页面加载显示的过程分析

          本文链接:https://www.haomeiwen.com/subject/rtyqhxtx.html