zoukankan      html  css  js  c++  java
  • 从一个url地址到最终页面渲染完成,发生了什么?

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

    — 浏览器DNS缓存

    —系统DNS缓存

    —路由器DNS缓存

    —网络运营商DNS缓存

    —递归搜索,blog.baidu.com

     - .com域名下查找DNS解析

     - .baidu域名下查找DNS解析

     - .blog域名下查找DNS解析

     - .出错了

    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四次挥手

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

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

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

    第四次挥手,由浏览器发起,告诉服务器,我东西接受完了,我准备关闭了,你也准备吧。

  • 相关阅读:
    Prim算法以及Kruskal算法
    PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
    PAT甲级考前整理(2019年3月备考)之一
    PAT甲级考前整理(2019年3月备考)之二,持续更新中.....
    linux下挂载U盘
    opencv2已有的情况下,安装opencv3以及对应的opencv_contrib
    二维数组和二级指针做函数参数的问题
    ubuntu14.04下 python2.7怎么链接到安装在指定文件夹的opencv3
    使用opencv的nonfree模块
    PaddlePaddle开源平台的应用
  • 原文地址:https://www.cnblogs.com/web-zxq/p/12827498.html
Copyright © 2011-2022 走看看