`
ariyue
  • 浏览: 345247 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

浏览器加载和渲染网页的过程

阅读更多
     关于网页加载和渲染的过程,在网络上的讨论并不多。可能是因为这个过程比较复杂,而且浏览器执行的速度太快,目前还没有发现什么比较好的工具可以清楚的看到浏览器解析网页的每一个过程。通过firedug和httpWatch可以看到浏览器的http请求,但是对于浏览器如何paint和flow处理html元素,我们仍然是不得而知。“flow”这个词借鉴于reflow,表示浏览器第一次加载网页的过程。在网络上搜索了一下,学习如下。



关于浏览器加载网页过程的有趣视频


       可以参见:http://www.aoao.org.cn/blog/2008/05/reflow/ (形象化的reflow)。这个视频展现了网页加载的过程,看着比较有趣。要是可以更加形象化,就更好了,可以帮助我们书写更好的提高网页加载速度的代码。



浏览器内核


       不同的浏览器内核,对于网页的解析过程肯定也不尽相同。http://www.mac52ipod.cn/post/Trident-Gecko-WebKit-Presto.php 一文对各种浏览器的页面渲染引擎进行了简介。目前主要有基于

(1)Trident页面渲染引擎 –> IE系列浏览器;

(2)Gecko页面渲染引擎 –> Mozilla Firefox;

(3)KHTML页面渲染引擎或WebKit框架 –> Safafi和Google Chrome;

(4)Presto页面渲染引擎 –> Opera

       详细的介绍可以参见原文。



浏览器解析网页的过程


       http://hi.baidu.com/seosky/blog/item/78d3394c130f86ffd72afc56.html 浏览器加载和渲染原理分析一文中通过一定的方法,推断了浏览器加载解析网页的顺序大致如下:

1. IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的;

2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完);

3. 在下载过程中,如果遇到某一标签是嵌入文件,并且文件是具有语义解释性的(例如:JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载,并且在下载后进行解析,解析(JS、CSS中如有重定义,后定义函数将覆盖前定义函数)过程中,停止页面所有往下元素的下载;

4. 样式表文件比较特殊,在其下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行样式渲染。并以此方式一直渲染下去,直到整个页面渲染完成。

       当然这是一个推断的过程。



借助Google PageSpeed和Yahoo YSlow分析网页加载


       通过这两个工具,测试网页加载过程,可以得到一些提高网页加载速度的建议。使用Google PageSpeed对Google首页进行分析,可以得到建议:

(1)压缩javascript和CSS;

(2)合并外部javascript和CSS;

(3)减少DNS寻址时间;这条与将图片分散到不同的域名存储这条折中处理;

(4)使用缓存;

(5)尽量避免CSS表达式;

(6)为图片增加宽度和高度属性;

(7)将css放在网页头部,合理放置js的位置。

       同时,利用YSlow对google首页进行分析,我们也可以得到一些改进的建议。这些建议差不太多,就不在详细说明。

       合理使用这两个工具,优化我们的网页,提高网页加载速度,增强用户体验。



---------------------------



我自己的误解

       过去一直以为,一个容器如果没有读到自己的结束标签,那么这个容器就不会在浏览器中显示出来。今天测试了下,却发现浏览器在读到一个容器的开始标签的时候,就可以显示该容器了。关于浏览器如何一个一个的paint HTML中的元素,如果flow它们,这个过程还需要进一步了解。当然,也可以不管过程,只看加载的结果,通过pagespeed和Yslow来优化自己的网页。个人在做布局的时候,还是会秉承一条原则:尽量让一个父容器小一些!



参考文献


[1] 形象化的reflow. http://www.aoao.org.cn/blog/2008/05/reflow/ . 2009-7-20

[2] 各种浏览器的页面渲染引擎简介. http://www.mac52ipod.cn/post/Trident-Gecko-WebKit-Presto.php. 2009-7-20

[3] 浏览器加载和渲染原理分析. http://hi.baidu.com/seosky/blog/item/78d3394c130f86ffd72afc56.html. 2009-7-20
分享到:
评论

相关推荐

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

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

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

    浏览器渲染过程是一个复杂的过程,它涉及到多个进程和线程的协作。为了确保浏览器的稳定性和安全性,浏览器采取了多进程模型。每个进程都有其自己的内存空间,每个线程都是进程的一部分,并且共享同一个进程的内存...

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

    浏览器的渲染过程是前端开发中的核心概念,它涉及到用户从输入URL到看到网页内容的整个流程。本文主要探讨了浏览器渲染页面的原理,特别是关键渲染路径以及CSS和JavaScript如何影响这个过程。 关键渲染路径是浏览器...

    浏览器渲染HTML过程.docx

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

    java浏览器+swing嵌套网页+源码免费

    Java浏览器是Java编程环境中用于显示和交互Web内容的软件组件,它允许开发者在Java应用程序中嵌入网页浏览功能。在本资源中,我们关注的是使用Swing库来实现这一目标,Swing是Java Foundation Classes (JFC)的一部分...

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

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

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

    综上所述,QQ浏览器的高速渲染组件是一个功能强大的工具,它不仅能够显著提升网页的加载速度和渲染效率,而且能够在很大程度上改善用户的浏览体验。它特别适合那些需要提升旧设备性能的用户,或是希望在现有设备上...

    浏览器渲染过程与性能优化1

    浏览器渲染过程是网页显示的关键步骤,它涉及到HTML、CSS和JavaScript等多个方面,直接影响到页面的加载速度和用户体验。本文将详细解析浏览器渲染的过程,并探讨如何进行性能优化。 首先,当用户在浏览器中输入URL...

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

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

    QtWebView在线加载网页Demo

    4. **事件处理**:可以设置信号和槽来监听网页加载状态,如加载开始、加载完成、加载错误等。 5. **网页控制**:QtWebView提供了多种方法来控制网页,如`QWebView::back()`, `QWebView::forward()`, `QWebView::...

    测试浏览器运行速度

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

    网页爬虫,网页抓取,js加载后网页抓取,超简单。

    对于JavaScript加载后的网页抓取,一种常见的解决方案是使用Headless浏览器,比如Google的Chrome提供了Headless模式,它可以在没有界面的情况下运行,执行JavaScript并返回渲染后的页面内容。另一种方法是使用像...

    手机网页浏览器 Wap浏览器 wml浏览器

    Wap浏览器就是能够解析和展示WML格式页面的软件,它简化了网页结构,以便在资源有限的移动设备上快速加载和浏览。早期的诺基亚、摩托罗拉等手机中常见的Opera Mini、UCWeb等浏览器都支持WML页面。这些浏览器通常具有...

    网页浏览器程序设计.rar,网页浏览器程序设计.rar

    网页浏览器程序设计是一个复杂而有趣的领域,涉及到许多关键的技术和概念。这个压缩包"网页浏览器程序设计.rar"可能包含了关于创建网页浏览器的详细教程或案例研究。以下是对这个主题的一些核心知识点的概述: 1. *...

    网络游戏-一种网页游戏的加载方法及网页浏览器.zip

    在网络游戏领域,网页游戏是一种无需下载安装即可在线游玩...《一种网页游戏的加载方法及网页浏览器.pdf》这份文档可能详细介绍了这些概念和技术的实现细节,对于理解网页游戏的运行机制和优化策略具有很高的参考价值。

    课程设计 网页浏览器 课程设计 网页浏览器

    4. **浏览器工作原理**: 理解浏览器如何解析HTML、CSS,执行JavaScript,以及渲染页面的过程,有助于编写兼容不同浏览器的代码。 5. **网络协议**: HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是互联网上...

    网页浏览器(java实现)

    优化策略包括减少内存占用、异步加载和渲染网页,以及使用Web Workers来提高多线程处理能力。 8. **扩展功能**:为了增强用户体验,可以考虑添加书签功能,使用数据库存储书签信息;还可以实现下载管理器,处理用户...

    WebKit加载网页的流程.pdf

    WebKit加载网页的过程涉及到多个关键步骤和组件,其中WebCore是WebKit中负责网页内容加载和渲染的核心框架。WebKit是一个开源的网页浏览器引擎,广泛用于Safari、Chrome、以及其他一些浏览器中。WebCore作为WebKit的...

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

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

Global site tag (gtag.js) - Google Analytics