浏览器渲染原理解析建议收藏

Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的:
  1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
  2. 浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件;
  3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
  4. 浏览器继续载入html中<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
  5. 浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
  6. 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
  7. 浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它;
  8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<div> (style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;
  9. 终于等到了</html>的到来,浏览器泪流满面……
  10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
  11. 浏览器召集了在座的各位<div><span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请
  求了新的CSS文件,重新渲染页面。

 

 

 

页面为什么会慢?那是因为浏览器要花时间、花精力去渲染,尤其是当它发现某个部分发生了点变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫reflow。

 http://www.cnblogs.com/roucheng/

reflow问题是可以优化的,我们可以尽量减少不必要的reflow。比如开头的例子中的<img>图片载入问题,这其实就是一个可以避免的reflow——给图片设置宽度和高度就可以了。这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。

另外,有个和reflow看上去差不多的术语:repaint,中文叫重绘。如果只是改变某个元素的背景色、文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint。repaint的速度明显快于 reflow(在IE下需要换一下说法,reflow要比repaint 更缓慢)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120702.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 异步提交表单_js异步提交表单并回调

    异步提交表单_js异步提交表单并回调异步提交表单异步提交表单的步骤所谓异步提交表单,就是不再使用表单的提交按钮实现表单的提交功能,而是通过Ajax异步交互方式实现表单提交。具体实现步骤如下:获取表单及所有表单组件对应的数据值。将所有表单组件对应的数据值拼成特定格式的字符串或是JSON格式数据。通过Ajax异步交互方式提交表单。varinfo=’username=’+$(‘#username’).val()+’&password=’+$(‘#password’).val();$.ajax({url:”

    2025年7月4日
    4
  • 2018怎样发英文外链才能提升谷歌排名

    2018怎样发英文外链才能提升谷歌排名自从搜索引擎诞生以来,外链一直都是占比较重要的位置,但是谷歌一直在完善算法,让搜索引擎显示更好的搜索结果,2014年以前,通过软件群发外链,会收到不错的效果,但是现在谷歌搜索引擎已经可以识别这些不自然的外链,一旦你的网站再这些群发外链,就会被惩罚,严重的话,被K。我们一直坚守手工做高质量相关性外链,无论谷歌算法如何变,我们的网站一直迄立不倒!那么2018年,我们如何做高质量的相关性英文外链呢?1,…

    2022年5月13日
    53
  • 观察者模式observer不适用于_观察者模式是什么

    观察者模式observer不适用于_观察者模式是什么观察者模式Obeserver动机模式定义实例结构图要点总结笔记动机在软件构建过程中,我们需要为某些对象建立 一种“通知依赖关系” —-一个对象发(目标对象)的状态发生改变,所有依赖的对象(观察者对象)都将很好的得到通知。如果这样的依赖关系过于紧密。将使软件不能很好的抵御变化使用面向对象技术 可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。模式定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(subject)的状态发生改变时,所有依赖于它的对象都得到通

    2022年8月11日
    6
  • 测试报告范文_系统测试报告

    测试报告范文_系统测试报告前言受益于pytest的集成,HttpRunnerv3.x可以使用pytest所有插件,包括pytest-html和allure-pytest,也可以实现这2种方式的报告内置html报告pyt

    2022年7月28日
    7
  • 数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]

    数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]SQL主要是用来到数据库里查询数据,这是数据分析过程的第一步。你要分析数据,首先要获取数据。所以,这是转行到数据分析岗位的必备技能。感谢@猴子老师的“猴子聊人物”公众号,我入门SQL就是在猴子的“转行数据分析师闯关教程”里学到的。柯本:新手如何学习SQL​zhuanlan.zhihu.com柯本:《MySQL必知必会》学习小结​zhuanlan.zhihu.com一、SQL性能优化题SQL语句…

    2022年4月19日
    211
  • 太极阳必须要root吗_root手机教程

    太极阳必须要root吗_root手机教程以前的root基本是suroot,但是su不再维护更新之后,就有了现在的比su更好玩的root手机的工具→magisk。Magisk具备很强大的模块扩展,可以不修改system区的文件,达到修改system文件一样的效果,例如换字体,换主题,换卡机界面,换gpu驱动等等。现在就来一个面具的刷入教程。1.一台可以解锁BL的手机(可以查看公众号的历史信息,刷机教程)2.给机器刷入第三方Re…

    2022年6月4日
    88

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号