一直很好奇chrome和firefox这两大浏览器的页面渲染有什么不同,今天自己写了些html代码来做了下检验。

先做html编码,代码如下:

<!DOCTYPE html>
<html>
    <head>
        <title>测试浏览器渲染</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    </head>
    <body>
        <img src="data:images/marx.png">
        <div>Render html</div>
        <div id="test">正在执行...</div>
        <script type="text/javascript" src="lib/jquery-1.7.1.js"></script>
        <script>
            var end = 1000000;
             
            for(i=1;i<=end;i++)
            {
                $("#test").html("执行js"+i);
            }
        </script>
        <link rel="stylesheet" type="text/css" href="css/renderA.css">
    </body>
</html>

在css文件引入的前面写了段耗时较长的js代码,目的就是想检验一下css未引入时,两个浏览器渲染页面有什么不同,然后我做了件看起来无关紧要的事,将这个页面部署在tomcat server里,再启动tomcat,在浏览器里查看渲染效果,看起来有点多此一举,但是不这样做的话,firefox浏览器控制台下面的网络栏看不到文件加载的具体详情,这个我还没找到为啥,先去查查资料吧。好了,启动server,在浏览器里查看渲染效果。

先看看在chrome 里的渲染效果(我这里没安装chrome浏览器,用的是360浏览器,并切换至多标签模式,这模式就是使用chrome浏览器的内核,吐槽:该死的瓜子二手车,尼玛这广告无处不在)。

可以看到renderA.css文件处于pending状态,写的样式

body {
background-color: navy;
color:#ffffff;

}

也暂时未生效,但是img图片和文字是先加载出来了的,随后,在那个超长的for循环完成之后,css文件加载上来了,渲染生效了

同时,我在firefox里也做了实验,先输入地址,看到效果却是这样子的

因为那段for循环未执行完,css也未加载上来,整个html未读取完,所以网页内容仍然是设置的默认页面,除了个jquery文件处于pending状态,什么都没有加载上来,页面上什么都没有,还是原来的默认页面内容。

随后,js那段for循环执行完毕,css加载完毕,html读取完毕,才渲染整个页面。

看到了区别,大致总结了一下chrome和firefox浏览器渲染的不同:

1、chrome不管html读取完没有,总是有一个预加载的,img图片或者其他元素都是预先加载上来了的,虽然样式有点丑;

firefox没有这个预加载的过程,中规中矩的等待整个html文件读取完毕,再行加载各元素。

2、chrome渲染虽然也是等整个html文件读取完毕,再行渲染,但是它的预加载为他加分不少,这样子做的缺点在于有一个超级丑的展示过程,看着难受;

firefox虽然没有这个预加载,没有那个特丑的展示过程,只要渲染完毕,展示给用户的就是一个好看的有样式的页面,但是缺点在于如果这一下渲染的东西过多,或者同时还要下发请求查询数据什么的,浏览器压力恐怕有些大,尤其是部分较低版本的firefox浏览器稳定性并不好,这时候有挂掉的可能。

当然也有共同点:

1、js脚本执行阻塞了页面的渲染;

2、样式的渲染都是css文件加载完之后才开始的;

大致就写这儿多吧,关于浏览器渲染差别的探讨还要继续,加油自己!

chrome和Firefox浏览器渲染页面的不同的更多相关文章

  1. 浏览器渲染页面的时候,不同的script块之间的关系

    浏览器渲染页面时,当读到script元素的时候,浏览器中的js引擎会分多个script代码块来读取,不同的script代码出错互不影响,但是由于script中的变量作用域是全局,所以前面代码块声明的变 ...

  2. 网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面

    网页中引用的外部文件: JavaScritp.CSS 等常常会阻塞浏览器渲染页面.假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染 ...

  3. 浅谈浏览器解析 URL+DNS 域名解析+TCP 三次握手与四次挥手+浏览器渲染页面

    (1)浏览器解析 URL 为了能让我们的知识层面看起来更有深度,我们应该考虑下面两个问题了: 从浏览器输入 URL 到渲染成功的过程中,究竟发生了什么? 浏览器渲染过程中,发生了什么,是不是也有重绘与 ...

  4. 浏览器渲染页面原理,reflow、repaint及其优化

    浏览器的主要组件包括: 1.      用户界面 - 包括地址栏.前进/后退按钮.书签菜单等.除了浏览器主窗口显示的你请求的页面外,其他显示的各个部分都属于用户界面. 2.      浏览器引擎 - ...

  5. 怎么在Chrome和Firefox浏览器中清除HSTS设置?

    HSTS代表的是HTTPS严格传输安全协议,它是一个网络安全政策机制,能够强迫浏览器只通过安全的HTTPS连接(永远不能通过HTTP)与网站交互.这能够帮助防止协议降级攻击和cookie劫持. HST ...

  6. 160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘

    一.浏览器渲染页过程描述   1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DO ...

  7. 浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘。

    一.浏览器渲染页过程描述 1.浏览器解析html源码,然后创建一个DOM树. 在DOM树中,每一个HTML标签都有一个对应的节点(元素节点),并且每一个文本也都有一个对应的节点(文本节点). DOM树 ...

  8. Chrome和Firefox浏览器调试对比

    最近的项目中使用Extjs5, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加了一 ...

  9. IE, Chrome和Firefox浏览器 差异对比

    最近的项目中使用Extjs5.6, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加 ...

随机推荐

  1. python学习笔记-零碎知识点

    1. 绝对值 abs(-4) 结果: 4 2.

  2. spring 事务管理配置

    本篇文章只涉及spring事务的配置,不进行事务的介绍. spring通过PlatformTransactionManager接口作为事务管理器来进行事务的管理,它本身并不进行事务的创建以及相关操作, ...

  3. Angular 从入坑到挖坑 - Router 路由使用入门指北

    一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...

  4. 【Spark】RDD的依赖关系和缓存相关知识点

    文章目录 RDD的依赖关系 宽依赖 窄依赖 血统 RDD缓存 概述 缓存方式 RDD的依赖关系 RDD和它依赖的父RDD的关系有两种不同的类型,即窄依赖(narrow dependency) 和宽依赖 ...

  5. 解决MySQL 8.0数据库出现乱码的问题

    1.在MySQL 8.0的安装目录下创建一个my.ini文件(保存为utf8格式),然后写入以下内容: [mysql] # 设置mysql客户端默认编码 default-character-set=u ...

  6. Openwrt:基于MT7628/MT7688的PWM驱动

    前言 MT7628/MT7688的PWM驱动相关资料较少,官方的datasheet基本也是一堆寄存器,啃了许久,终于嚼出了味道.由于PWM存在IO口复用的问题,所以要提前配置好GPIO的工作方式,不然 ...

  7. 通过10个实例小练习,快速熟练 Vue3.0 核心新特性

    Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了. GitHub 博客地址: https://github.com/biaochenxuying ...

  8. 你应该知道的Python3.6、3.7、3.8新特性

    很多人在学习了基本的Python语言知识后,就转入应用阶段了,后期很少对语言本身的新变化.新内容进行跟踪学习和知识更新,甚至连已经发布了好几年的Python3.6的新特性都缺乏了解. 本文列举了Pyt ...

  9. 微信小程序开发实战(1):使用滚动视图

    本文主要介绍了滚动视图组件(scroll-view)的各种常用功能,例如,垂直和水平滚动.滚动事件等,并通过例子代码来演示这些功能的使用方法.   1. 垂直滚动视图 scroll-view是容器组件 ...

  10. jar包名修改工具

    jar包名修改工具 软件传送门:链接: https://pan.baidu.com/s/12StRdEkYGmMn1DuNSquXSw   提取码: i9w1 闲暇之余,利用jarjar.jar写了一 ...