`
highfly-s
  • 浏览: 100413 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浏览器如何渲染网页?

阅读更多

基本概念

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 哪一部分的代码,它们都彼此相互影响着。 当 然,reflow 问题是可以优化的,我们可以尽量减少不必要的 reflow。比如开头的例子中的 <img> 图片载入问题,这其实就是一个可以避免的 reflow —— 给图片设置宽度和高度就可以了。这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。

repaint(重绘)

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

 

转载自:http://www.muzilei.com/archives/522

分享到:
评论

相关推荐

    哪款网页浏览器最省电?.pdf

    1. **渲染引擎效率**:浏览器的核心是其渲染引擎,更高效的引擎能更快地解析和渲染网页,从而减少CPU和GPU的工作负载,降低功耗。例如,谷歌的Chrome浏览器采用Blink引擎,虽然功能强大,但因为资源占用较高,可能...

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

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

    怎么让Win10全新Edge浏览器更流畅?.docx

    这个功能允许浏览器使用最新的JavaScript引擎特性,从而提高网页的渲染速度和响应能力。 3. **启用asm.js**:接下来勾选“启用asm.js”。asm.js是一种高度优化的JavaScript子集,专为接近原生代码的速度而设计,...

    llq _java_浏览器_llq浏览器下载_android_llq是什么app_

    在这个情况下,llq浏览器可能就是基于WebView构建的,用于显示网页内容。WebView可以节省开发者的时间,因为他们不必从头开始实现网络渲染和交互,而是可以直接利用Android提供的原生功能。 总结来说,"llq浏览器" ...

    浏览器渲染页面的流程.md

    在学习过程中,接触到浏览器渲染网页这个问题,在经过查找有关文档后,就该问题谈谈我自己的理解。

    C# webkit为内核的浏览器打开网页源码__(0521).rar

    这个主题涉及的“C# webkit为内核的浏览器打开网页源码”着重于利用C#编程语言和WebKit开源渲染引擎来创建一个能够显示网页源代码的浏览器应用。下面我们将深入探讨这一技术栈中的关键知识点。 首先,C#是一种由...

    C++制作的网页浏览器程序源代码

    在"网页浏览器"这一标签中,我们可以期待看到C++如何利用这些特性来处理网络请求、渲染网页、管理内存以及实现用户交互。 源代码是程序的核心,通过阅读和分析源代码,我们可以学习到很多实际编程技巧。在这个项目...

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

    在进行网页浏览器的课程设计时,学生通常需要实现基本的浏览功能,如URL解析、请求发送、页面解析与渲染。通过这样的实践,他们能深入理解浏览器背后的复杂机制,并锻炼解决问题和团队协作的能力。CH04可能是指课程...

    网页浏览器 模拟网页浏览器

    2. **页面加载与渲染**:加载HTML页面后,浏览器需要解析HTML代码并渲染成可视化的网页。Java中没有内置的HTML渲染引擎,但可以使用第三方库如Jsoup来解析HTML,或者使用JavaFX或Swing等GUI库创建用户界面来展示网页...

    qt+cef嵌入浏览器

    【Qt + CEF 嵌入式浏览器】 在IT领域,开发一款功能强大的浏览器往往需要结合多种技术。这里我们关注的是“qt+cef嵌入浏览器”,这是一个利用Qt框架与CEF(Chromium Embedded Framework)相结合来创建一个具备谷歌...

    selenium进行chrom浏览器渲染.zip

    Chrome浏览器渲染是指浏览器如何解析HTML、CSS和JavaScript,最终将网页呈现给用户的过程。Chrome浏览器的渲染引擎Chromium负责这一过程,它不仅解释和执行JavaScript,还负责布局、绘制和动画效果。Selenium通过...

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

    手机网页浏览器是移动设备上用于访问互联网的重要工具,它们使得用户可以在小巧的屏幕上浏览和交互网页内容。Wap浏览器和WML浏览器则是早期移动互联网时代的产物,尤其在2G网络时代,它们扮演了至关重要的角色。 ...

    C# webkit为内核的浏览器打开网页源码__0525).rar

    本资源“C# webkit为内核的浏览器打开网页源码__0525).rar”聚焦于利用C#创建一个基于WebKit内核的浏览器,用于查看网页源代码。WebKit是一个开源的渲染引擎,它被Safari、Chrome等流行浏览器所采用,能够高效地解析...

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

    浏览器在渲染网页时,首先会构建一个 DOM 树,即 Document Object Model,DOM 树是一种树形结构,用于表示 HTML 文档的结构。然后,浏览器会根据 DOM 树构建一个 Render Tree,即渲染树,渲染树是浏览器将要渲染的...

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

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

    解决win7中使用chrome浏览器打开网页字体模糊的问题

    在Windows 7操作系统中,用户有时会遇到使用Google Chrome浏览器打开网页时,字体显示模糊的情况。这通常是由于系统兼容性问题、显卡驱动不匹配或Chrome浏览器设置不当引起的。为了解决这一问题,我们可以尝试以下几...

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

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

    myIE_2.rar_C# 网页_ie 浏览器_网页浏览器

    【描述】中提到,“C#做的网页浏览器,可以简单的实现IE的功能”,这表明该程序可能包含了浏览网页、前进、后退、书签管理、地址栏输入、页面加载与渲染等基础功能。C#是一种面向对象的编程语言,由微软公司推出,...

    兼顾多个浏览器的网页模块

    对于`div`元素,它是网页布局中常用的一个块级元素,但各个浏览器对其解析和渲染可能存在差异。为了确保跨浏览器的兼容性,我们需要确保在CSS中正确设置`div`的边距、填充、宽度和高度,以及避免使用可能导致兼容...

Global site tag (gtag.js) - Google Analytics