html解析原理
标准的web前端工程师需要知道 ◎浏览器(或者相应播放器)的渲染/重绘原理
这我得加把劲了。我还真的说的不是很清楚,我就G下,结果不是很多,找到了有一个,就记下来了。。。
以下部分来自handawei-javaeye的blog:
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文件,重新渲染页面。
浏览器每天就这么来来回回跑着,要知道不同的人写出来的html和css代码质量参差不齐,说不定哪天跑着跑着就挂掉了。好在这个世界还有这么一群人——页面重构工程师,平时挺不起眼,也就帮视觉设计师们切切图啊改改字,其实背地里还是干了不少实事的。
说到页面为什么会慢?那是因为浏览器要花时间、花精力去渲染,尤其是当它发现某个部分发生了点变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫reflow。reflow几乎是无法避免的。现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。通常我们都无法预估浏览器到底会reflow哪一部分的代码,它们都彼此相互影响着。
reflow问题是可以优化的,我们可以尽量减少不必要的reflow。比如开头的例子中的<img>图片载入问题,这其实就是一个可以避免的reflow——给图片设置宽度和高度就可以了。这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。
另外,有个和reflow看上去差不多的术语:repaint,中文叫重绘。如果只是改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint。repaint的速度明显快于reflow(在IE下需要换一下说法,reflow要比repaint 更缓慢)。下次将通过一系列的实验说明在Firefox、IE等浏览器下reflow的优化
分享到:
相关推荐
HTML解析原理是Web前端开发中的核心概念,理解这一原理对于优化网页性能至关重要。浏览器的渲染过程涉及多个步骤,包括解析HTML、CSS、JavaScript以及处理图片等资源,其中关键环节是页面的渲染、重绘(repaint)和...
HTML解析原理是Web前端开发中的核心概念之一,它关乎到网页如何在浏览器中呈现和运行。浏览器通过一系列复杂的步骤来解析HTML文档,构建DOM树,然后结合CSS样式和JavaScript脚本,最终形成用户可见的页面。 首先,...
HTML解析源码是编程领域中一个关键的主题,特别是在构建网页爬虫、网页解析器或处理HTML内容的应用程序时。HTML(HyperText Markup...学习和理解这样的源码有助于提升对HTML解析原理的理解,并能够定制自己的解析工具。
2. **语法分析(Syntax Analysis)**:也称为解析,通过解析器将Token流构造为语法树。例如,LL(1)、LR(0)、LALR(1)等解析技术可能会被提及。文件中可能包含各种解析算法的描述和示例。 3. **语义分析(Semantic ...
在本文中,我们将深入探讨HTML解析器的工作原理、它如何进行网页源代码分析以及如何帮助防止恶意代码。 首先,HTML解析器的作用是将接收到的HTML文档分解成一系列可理解的元素,这些元素构成了网页的结构和内容。这...
在这个文件中,开发者可能实现了HTML解析器的类和方法,如解析HTML文档、检测错误、生成解析树等功能。 3. **代码中国.txt**:这个文件可能包含了关于程序开发或实现的额外信息,比如代码注释、编程技巧或者开发者...
《百度文库资源解析原理与实现讲解》 百度文库作为一个知名的在线文档分享平台,提供了大量的学习资料和专业文档。然而,由于版权保护,直接下载这些文档并不容易。本篇文档将深入解析百度文库资源的下载原理,帮助...
通过这个简单的C语言HTML解析器,初学者可以深入理解HTML文档的结构,掌握文本解析的基本原理,以及如何在C语言环境中构建复杂的数据结构和处理逻辑。这种实践对于提升编程技能和理解网络爬虫、网页抓取等更高级话题...
- **书籍资料**:如《Java程序设计》等书籍介绍正规表达式等基础知识,虽然不是专门针对HTML解析,但对于理解HTML的解析原理有很大帮助。 #### 5. HTML解析应用场景 - **网络爬虫**:用于自动化抓取网页数据,如...
例如,使用`Request.BinaryRead(Request.TotalBytes)`读取整个请求体,然后通过识别分隔符来解析出各个表单项的数据。每个表单项的数据以`Content-Disposition`字段来标识,包括控件名称、文件名和MIME类型等信息。...
HTML解析器的工作原理是对HTML源码进行分析,识别出标签、属性、文本等内容。Winista.HtmlParser可能采用了基于DOM(文档对象模型)或SAX(简单API for XML)的解析策略。DOM解析会构建一个完整的HTML结构树,而SAX...
在浏览器加载HTML文档时,它会使用内置的解析器来解析这些标签,并根据它们构建DOM(文档对象模型)树,这个过程就是HTML解析。 HTMLParser是实现这个解析过程的软件组件。它的主要任务包括识别HTML标记、处理嵌套...
《百度文库资源解析原理与实现》 在深入探讨百度文库资源的解析与实现之前,首先要理解百度文库作为一个在线文档分享平台,其资源的访问和下载机制。本篇文章将围绕这一主题展开,旨在揭示百度文库文档背后的下载...
总之,这个实验旨在帮助学生理解和实践编译器的词法分析部分,通过实际操作,增强对编程语言解析过程的理解。对于计算机科学专业的学生来说,这是掌握编译技术的重要步骤,对于未来在软件开发、系统分析和语言设计等...
本文将深入探讨“phphtmlparser”这一专门用于PHP的HTML解析工具,包括其基本原理、功能特性以及实际应用案例,旨在帮助读者更好地理解和使用这一工具。 一、PHPHTMLParser简介 PHPHTMLParser是一款开源的PHP库,...
HTML解析器的工作原理通常分为几个关键步骤: 1. **词法分析**:解析器首先读取HTML文档,将字符流转化为一系列的标记(tokens),如开始标签、结束标签、文本节点等。这个过程也称为分词。 2. **解析树构建**:...
总的来说,“短视频去水印解析HTML源码”涉及到HTML解析、网络请求分析、动态加载机制理解和可能的反爬策略应对等多个方面的技术知识。它为我们揭示了互联网内容获取背后的复杂性,同时也提醒我们在享受技术便利的...
HTML页面可以通过互动演示,让用户实际操作这些分析工具,理解其工作原理和应用场景。 5. **GIS应用**:GIS广泛应用于城市规划、环境科学、自然资源管理、灾害应急、交通规划等领域。HTML页面可以列举实例,展示GIS...
不支持HTML标签,这是一个ppt文档,大牛总结的es底层的一些原理