从url到显示页面

一:将url解析为ip

  1. 浏览器缓存:浏览器会按照一定的频率缓存DNS记录。
  2. 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去hosts文件中找。
  3. 路由缓存:路由器也有DNS缓存。
  4. ISP的DNS服务器:ISP是互联网服务提供商(铁通电信联通)的简称,ISP有专门的DNS服务器应对DNS查询请求。
  5. 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)。

二:建立连接

  1. 首先浏览器利用tcp协议通过三次握手与服务器建立连接
  2. 浏览器根据解析到的IP地址和端口号发起http的get请求
  3. 服务器接收到http请求之后,开始搜索,并使用http返回响应报文
  4. 浏览器接收到返回的html页面之后,开始进行页面的渲染

三:浏览器解析html

  1. 转换: 浏览器从磁盘或网络读取 HTML 的原始字节,并根据文件的指定编码(例如 UTF-8)将它们转换成各个字符。

  2. 令牌化: 浏览器将字符串转换成 W3C HTML5 标准规定的各种令牌,例如,“”、“”,以及其他尖括号内的字符串。每个令牌都具有特殊含义和一组规则。

  3. 词法分析: 发出的令牌转换成定义其属性和规则的“对象”。

  4. DOM 构建: 最后,由于 HTML 标记定义不同标记之间的关系(一些标记包含在其他标记内),创建的对象链接在一个树数据结构内,此结构也会捕获原始标记中定义的父项-子项关系:HTML 对象是   body 对象的父项,body 是 paragraph 对象的父项,依此类推。

四:解析css

  CSS 字节转换成字符,接着转换成令牌和节点,最后链接到一个称为“CSS 对象模型”(CSSOM) 的树结构内:

五:渲染

  1. 将cssom和dom合并为渲染树
  2. 布局:从render 树的底层节点开始,递归的计算每一个节点的几何信息,分为全局布局和增量布局
  3. 绘制:遍历渲染树,每个节点根据顺序(背景颜色、背景图片、边框、children、outline)
  4. 绘制过程是将 render tree 的信息转化为窗口上的每一个像素点,这个过程叫做栅格化。但这样仅仅绘制的是当前窗口的图像,当窗口移动的时候,才会将尚未绘制的部分进行删格化。
  5. 但现今浏览器更多采用的是 复合层(compositing)方式,而改方式其实就是将一个页面分为不同的 layer,顺便删格化这些 layer,而展示方式变为将不同的 layer 合并为一个新的画面,这样呈现给 web 动画创造了良好的基础。
    非原创

猜你喜欢

转载自www.cnblogs.com/jynb/p/12632572.html