简单说步骤如下:

1: 浏览器拿到html之后,开始解析html,生成dom tree

2: 在dom解析中,遇到js的外链或者script代码,浏览器会停止dom解析,在完成js代码下载执行之后,再继续解析。 遇到css的外链或者css的代码, 浏览器会继续解析dom, 并且会下载css,并行解析css生成cssom tree (dom 和 cssom是并行的)

3: dom tree 和 cssom tree 会合并生成render tree(渲染树),浏览器layout并paint, 这是一个渐进的过程。为达到更好的用户体验,render引擎会力求尽快将内容显示在屏幕上。它不必等到整个 HTML 文档解析完毕之后,就会开始构建render树和设置布局。

从上面的步骤不难看出,css放在头部,js放在尾部对页面优化的提升作用。 css并不阻塞dom解析(css只会阻塞渲染,css加载慢会让页面一开始很丑,但是不影响用户看,但是丑对用户就是一种伤害....), 而js会(除非少部分影响页面构建的js,剩下的js应该在底部加载执行)。

现在的浏览器很聪明,并不是解析到html的script或者link标签再去下载静态资源, 这些都在浏览器dom解析到之前被定位出来提前下载。 另外js的执行会被之前cssom的生成(css文件下载并解析)所阻断。

参考链接

浏览器显示html过程,浏览器显示页面的流程相关推荐

  1. 浏览器解析html过程,浏览器解析HTML,CSS过程

    原标题:浏览器解析HTML,CSS过程 每个浏览器都会有自己的呈现引擎,不同内核浏览器之间的解析顺序和方法存在差异,但都是大同小异: a)呈现引擎,呈现引擎一开始会从网络层获取请求文档的内容,内容的大 ...

  2. 从浏览器输入URL到页面显示的过程

    从浏览器地址栏输入url到显示页面的步骤: 目录 1.概述 浏览器根据请求的URL交给DNS域名解析器,找到真实IP,向服务器发起请求: 三次握手建立连接,服务器交给后台处理完成后返回数据,浏览器接收 ...

  3. 清除浏览器缓存之后为什么还是显示旧的html页面_H5缓存机制浅析-移动端Web加载性能优化...

    1 H5缓存机制介绍 H5,即HTML5,是新一代的HTML标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5引入的离线存储,这意味着 web 应用可进行缓存,并可在没 ...

  4. 从浏览器地址栏输入url到显示页面的步骤

    从浏览器地址栏输入url到显示页面的步骤(以HTTP为例) - 在浏览器地址栏输入URL - 浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤     - 如果资源未缓存,发起新请求   ...

  5. 【重难点】【计算机网络 01】OSI 七层模型和 TCP/IP 四层模型、IP 地址分为哪几类、ping 的原理、从浏览器地址栏输入 URL 到显示网页的过程、什么是 socket

    [重难点][计算机网络 01]OSI 七层模型和 TCP/IP 四层模型.IP 地址分为哪几类.ping 的原理.从浏览器地址栏输入 URL 到显示网页的过程.什么是 socket 文章目录 [重难点 ...

  6. 360浏览器兼容问题html,该页面显示了360浏览器中的异常兼容性问题

    简介: 在Web应用程序的开发过程中,发现某些页面无法在360浏览器上正确显示,但是在其他浏览器上360浏览器页面显示不全,它们都处于正常状态. 有什么问题吗? 询问: 网页在360浏览器上显示不正确 ...

  7. html页面在ie上出现404怎么解决,ie浏览器网页上有错误显示不全的解决方法

    ie浏览器网页上有错误显示不全的解决方法 有时候打开网页发现内容的排版比较混乱,比如上下两行的文字部分重叠,字体大小看起来很不协调,本来是一行的文字显示成两行,等等.这是因为浏览器的设置出了问题,很多 ...

  8. 清除浏览器缓存之后为什么还是显示旧的html页面_Web缓存知识

    缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...

  9. 浏览器输入网址到浏览器渲染页面的过程

    1) 在客户端浏览器中输入网址URL. 2) 发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址. 3) 客户端浏览器与WEB服务器建立TCP(传输控制协议)连接. 4) 客户端浏览器向对 ...

最新文章

  1. python 遍历字符串的每一个字符_Python之字符串的遍历的4种方式
  2. ACM - 算法篇,基础题目
  3. 给自己Mark一下要学习的东西
  4. lisp 焊接符号标注_焊接符号标注大全
  5. 效率达CPU一万倍、内含800万神经元:英特尔发布神经形态芯片超算
  6. (38)编写 ShellCode
  7. linux 上删除docker 虚悬镜像
  8. 在大公司天天调参数,感觉快废了~
  9. python控制语句第一章_python基础第一章
  10. String源码分析,中高级Java开发面试题
  11. 马里兰大学本科计算机科学,2020年马里兰大学本科专业设置
  12. 新年新气象,专注于重要的事
  13. 有关《大道至简》的几点讨论~
  14. 简要说明什么是cdn?
  15. 设计模式(二)-------------- 工厂模式
  16. 金色的SAP PO管理平台(永久保存SAP PO中间件消息之六)
  17. 在Sublime Text 2中将默认语法设置为不同的文件类型
  18. oracle批量替换保留字,Oracle中的关键字保留字
  19. 网站繁简切换的JS遇到的一个BUG
  20. 羊皮卷的故事-第六章

热门文章

  1. 如何给企业选择一款ERP系统
  2. 基于神念TGAM的脑波小车(1)
  3. Spring MVC测试框架详解——服务端测试
  4. Python 监控主机程序,异常后发送邮件(我的第一只Python程序)
  5. 一觉醒来感觉自己回到了九八年, 让大数据来解释
  6. django学习笔记:AdminSite界面配置
  7. Matlab程序怎样打包
  8. mount: none already mounted or /cgroup busy
  9. 2011 端午后,杭州支付宝
  10. docker image设置jdk版本_Docker 部署 Spring Boot