`
zhoujm
  • 浏览: 11465 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

浏览器加载和渲染分析

阅读更多

 

浏览器加载和渲染分析

最近一直在做前端JS开发,为了更清楚的显示页面元素的加载顺序,动手写了一个程序,程序对页面中的每个元素都延迟5秒。

在IE6下查看loader.jsp这个页面,使用HttpWatch来检测页面元素的加载。从下面的图中可以看到加载顺序。


 

IE6首先加载了页面loader.jsp,

下载了主页面后,页面首先显示的是“红色测试文字”、“蓝色测试文字”几个字,但此时显示的是只是黑色字体,没有样式,因为样式还没有下载下来。

接下来页面中的标签是JS标签,属于嵌入文件,因此IE需要将其下载下来。这有两个文件,虽然IE6同时能够和同一个域 名的WEB Server并发建立两个链接,但是此时并没有使用两个连接,而是使用一个连接,在下载完成后,接下来才下载另外一个文件。

因为IE6浏览器没有对JS的加载做优化,JS文件加载顺序决定解释执行顺序,JS包含了语法定义,在第二个文件里面的函数可能用到了第一个文件里面的变量和函数,IE6没有做判断,如果先下载的是第二个文件,此时就会发生解释错误。JS按先后顺序放好,IE依次下载进行解释。后面的函数覆盖前面的函数定义。

注意:IE6在同步加载执行(当然可以setTimeout异步执行,如:l3.js)JS的时候,不会去下载新的资源,就算JS已经下载完成,只是在本地解释执行,看图片蓝色箭头指向的时间间隔,就是本地JS执行的用去的时间。

在下载完成后,我们看到load1.js,load2.js,l3.js开始顺序执行。而此时字体的样式表和图片仍然没有下载下来。“红色测试文字”,“蓝色测试文字”字体还是黑色显示的。

IE6下面的CSS是并行加载的,在两个CSS文件加载完成后,可以看到 “红色测试文字”,显示为红色, “蓝色测试文字”显示为蓝色,l1.css和 l2.css完成后,l3.css样式还没有下载下来,此时IE使用已经下载到样式对上面的元素渲染了一遍,此时虽然“红色测试文字”,“蓝色测试文字”字体样式显示一样,只是颜色不同相同。第三个文件下载后,此时IE又重新对“红色测试文字”和“蓝色测试文字”进行渲染,“红色测试文字”和“蓝色测试文字”字体,大小变了。

接下来看到的是图片文件下载,此时看到的是两个图片同时开始下载,而且是下载完成后,立即在页面上开始显示,直到所有的图片下载完成。

经过以上的分析,推测IE下载或者渲染顺序可能如下:

IE6下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(但并不是说所有相关联的元素都已经下载完。)在下载过程中,如果遇到某一标签是嵌入文件,并且文件是具有语义解释性 的(例如:JS脚本),那么此时IE的下载过程会启用单独连接进行下载。并且在下载后进行解析,解析(JS中 如有重定义,后定义函数将覆盖前定义函数)过程中,停止页面所有往下元素的下载。

样式文件比较特殊,在其下载完成后,会用样式表对整个页面的进行渲染,下载完成一个渲染一个,后面的样式会覆盖前面的样式。l3.css覆盖了l1.css,l2.css的字体大小,l3.css渲染完成以后页面的“红色测试文字”和“蓝色测试文字”字体变小了。

Firefox 3的同一域名并发的连接是6个,如下图:

FF和IE6的渲染存在一些差别,

1、 CSS渲染,FF会把l1.css,l2.css,l3.css合并后再渲染整个页面。IE6会下载一个渲染一个。IE8和FF一样。

2、JS同步执行的时候都会禁止新的资源的下载。但是FF下载JS是并发的,解释执行和IE6一样是根据script标签顺序解释执行。

 

文件在网络传输上所花费时间。wait = 服务器所花时间 + 网络传输时间

服务器所花时间我们可以用Thread.sleep(5000);来让其休息5s,如下图


由此大概可以计算出 5.01-10 = 0.01秒,这就是大概在网络上所花的时间。HTTP304表示没有变化用本地缓存文件所以除Thread.sleep(5000)服务器耗时外,其它服务器操作几乎可以忽略时间。整个页面的效果图,出来还有渲染时间,现在还没有测试最终效果,也就是从文件下载到本地,到最终渲染完成的时间。也没有更好的方式去测试。

 

  • 大小: 115.9 KB
  • 大小: 129 KB
  • 大小: 11.1 KB
分享到:
评论

相关推荐

    浏览器加载、渲染和解析过程黑箱简析

    在理解浏览器加载、渲染和解析过程时,首先我们要知道这是一个复杂且高度优化的过程,涉及到了多个步骤和机制。浏览器的主要任务是将HTML、CSS和JavaScript等资源转化为用户可见的网页。下面我们将详细探讨这些过程...

    浏览器渲染过程及优化策略

    解析过程中,浏览器会对 HTML 文件进行词法分析和语法分析,生成 DOM 树。然后,浏览器会对 CSS 文件进行解析,生成 CSSOM 树。最后,浏览器会对 JavaScript 文件进行执行,生成执行上下文。 在渲染流程中,浏览器...

    浅析浏览器解析和渲染.pptx

    各浏览器加载策略,ie6/7/8/9,firefox,chrom.同步模型,JS阻塞,JS执行策略 ,Inline Script,阻塞渲染,浏览器的优化

    appendData异步加载大数据量分片加载数据和增量渲染的解决方案

    "appendData异步加载大数据量分片加载数据和增量渲染的解决方案"是Echarts为优化性能提供的一种高效策略,尤其适用于展示百万级甚至千万级的数据集。本文将深入探讨这一高级进阶技巧。 首先,我们来理解"appendData...

    浏览器性能优化-渲染性能1

    浏览器性能优化-渲染性能1 ...浏览器渲染性能优化是指为了提高浏览器的加载速度和响应能力所采取的一系列优化措施。其中,渲染树、CSS 动画和过渡、JavaScript 动画、JQuery 动画等都是浏览器渲染性能优化的重要部分。

    使用threejs在浏览器中渲染3D场景

    本文将深入探讨如何利用Three.js在浏览器中构建和渲染3D场景。 首先,要开始一个Three.js项目,你需要在HTML文件中引入Three.js库的脚本。通常,这可以通过CDN链接或本地文件来完成。例如: ```html ...

    浏览器的加载与页面性能优化

    预加载技术允许浏览器提前下载关键资源,如重要的CSS和JS文件,而预渲染则更为激进,它不仅下载页面,还将其完全渲染,等待用户点击即可立即显示。Chrome自9.0.597.0版本起支持预渲染功能,但需手动启用。 #### 五...

    浏览器X的系统分析实例.rar_文档浏览器_系统分析与设计_设计文档

    在这个阶段,开发者首先对需求进行收集和分析,理解浏览器X应具备的功能,如网页渲染、书签管理、历史记录、搜索功能等。此外,还会考虑性能指标,如加载速度、内存占用和跨平台兼容性。通过创建用户故事、用例图和...

    浏览器渲染HTML过程.docx

    5. **继续加载HTML**:浏览器加载`<body>`部分的代码,同时CSS文件已经加载完成,可以开始渲染页面。 6. **处理图片**:在HTML代码中遇到`<img>`标签,浏览器请求图片资源,但不会等待图片完全下载,而是继续渲染...

    用于切换CSS功能的devtools扩展以后开发人员查看页面应用在浏览器中的渲染方式

    描述中提到的“以后开发人员查看页面/应用在浏览器中的渲染方式”,意味着这个扩展帮助开发者在多种CSS渲染模式下查看和分析他们的项目。它可能包含了对各种CSS3新特性,如Flexbox、Grid布局、动画、过渡、以及旧版...

    测试浏览器运行速度

    在这个场景中提到的工具就是"测试浏览器运行速度",它专门用于检测浏览器加载网页的具体环节,帮助我们定位性能瓶颈。 "HttpWatch Pro"是一款强大的浏览器性能测试工具,正是标题中提及的解决方案。该软件能够集成...

    页面渲染原理及页面优化

    3. 加载外部资源:浏览器加载外部资源,如图片、JavaScript 文件、CSS 文件等。 4. 解析 CSS 文件:浏览器对 CSS 文件进行解析,包括解析选择器、样式规则等。 5. 解析 JavaScript 文件:浏览器对 JavaScript 文件...

    QQ浏览器高速渲染组件.docx

    总结来说,QQ浏览器的高速渲染组件是一个旨在提高浏览速度和网页显示质量的工具,特别是对于使用较低版本IE浏览器的用户,它能提供一个更加现代化的浏览体验。然而,用户应根据自己的实际需求和浏览器版本选择是否...

    React框架拥有服务器渲染实现快速的页面加载和在浏览器中页面之间无缝转换

    在本文中,我们将深入探讨React如何通过服务器渲染(Server-Side Rendering, SSR)来实现快速的页面加载和浏览器中的无缝页面转换。 首先,理解React的基本概念至关重要。React是Facebook推出的用于构建用户界面的...

    在浏览器加载CSS 时防止影响页面渲染的方法

    总之,通过非阻塞加载CSS和字体,可以改善页面的渲染速度,但必须考虑到浏览器的兼容性和性能影响。在实际应用中,应谨慎使用这些技术,并进行充分的跨浏览器测试,以确保最佳的用户体验。同时,保持关注社区的最新...

    动态加载Css 浏览器判断

    在提供的压缩包文件中,`Browes 判断.asp`和`Browes 浏览器判断.asp`可能是用于服务器端进行浏览器检测的ASP文件,而`CheckBr(动态加载Css).js`可能是用于客户端JavaScript动态加载CSS并进行浏览器判断的脚本。...

    浏览器的渲染:过程与原理 1

    本文主要探讨了浏览器渲染页面的原理,特别是关键渲染路径以及CSS和JavaScript如何影响这个过程。 关键渲染路径是浏览器呈现网页时必须执行的一系列步骤,其目标是尽快显示与用户当前操作直接相关的页面内容。这个...

    firefox 浏览器结构分析

    从用户界面到浏览器引擎,再到渲染引擎和其他关键组件,每个部分都经过精心设计,以提供最佳的用户体验。此外,Firefox还非常注重开放性和可扩展性,这使得它成为研究浏览器技术和开发创新应用的理想平台。对于那些...

    探析浏览器执行JavaScript脚本加载与代码执行顺序

    浏览器执行JavaScript脚本加载与代码执行顺序是网页开发中至关重要的一环,因为它直接影响到网页的渲染和用户体验。本文主要探讨了两种关键的概念:JavaScript脚本的阻塞性和执行顺序。 1. JavaScript脚本的阻塞性...

Global site tag (gtag.js) - Google Analytics