• 从一个url地址最终到页面渲染完成,发生了什么


    作为前端面试题之以,从一个url地址最终到页面渲染完成,共发生了以下六个步骤:

    1.DNS解析:将域名地址解析为ip地址

      先从浏览器DNS缓存中查找,如果没找到

      再从系统DNS缓存中查找,如果也没有找到

      然后再从路由器DNS缓存中查找,如果还是没有找到

      接着从网络运营商DNS缓存中查找,如果也还是没有找到

      就递归搜索,举个栗子:你要搜索:blog.baidu.com

        先从.com域名下查找DNS解析,如果没找到

        再从.baidu域名下查找DNS解析,如果还是没有找到

        就从blog域名下查找,如果还是没有找到

      页面会提示出现错误

    2.建立TCP连接,也就是TCP三次握手

    第一次握手,由浏览器发起,告诉服务器我要发送请求了,你在不在?

    第二次握手,由服务器发起,告诉浏览器我在,我准备接受了,你赶紧发送吧

    第三次握手,由浏览器发送,告诉服务器,我马上就发了,准备接受吧

    3.发送请求

      请求报文:HTTP协议的通信内容

    4.接收响应

      响应报文

    5.渲染页面

      当遇见HTML标记时浏览器调用HTML解析器解析成Token并构建dom树

      当遇见style/link标记,浏览器调用css解析器,处理css标记并构建cssom树

      当遇见script标记时,调用JavaScript解析器,处理script代码(绑定事件,修改dom树/cssom树)

      将dom树和cssom树合并成一个渲染树

      根据渲染树来计算布局,计算每个节点的几何信息(布局)

      将各个节点颜色绘制到屏幕上(渲染)

    注意:这五个步骤不一定按照顺序执行,如果dom树或cssom树被修改了,可能会执行多次布局和渲染

        往往实际页面中,这些步骤都会执行多次的

    6.断开连接,TCP的四次挥手

      第一次挥手,由浏览器发起的,发送给服务器,我东西发送完了(请求报文),你准备关闭吧

      第二次挥手,由服务器发起的,告诉浏览器,我东西接接受完了(请求报文),你也准备把

      第三次挥手,由服务器发起,告诉浏览器,我东西发送完了(响应报文),你准备关闭吧

      第四次挥手,由浏览器发起,告诉服务器,我东西接受完了(响应报文),我准备关闭了,你也准备把

        

  • 相关阅读:
    文档_word常用设置-操作
    Java NIO总结 整理
    Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
    Lock和synchronized比较详解
    SpringBoot如何将类中属性与配置文件中的配置进行绑定
    简述MyBatis的一级缓存、二级缓存原理
    服务器端filter解决ajax简单请求跨域访问问题
    Spring Boot异步执行程序
    程序猿和hr面试时的巅峰对决
    数据库三大范式详解(通俗易懂)
  • 原文地址:https://www.cnblogs.com/yaya-003/p/12800065.html
Copyright © 2020-2023  润新知