英文原文

http://taligarsiel.com/Projects/howbrowserswork1.htm

引言

浏览器可能是最广泛使用的软件了,本书我将介绍浏览器是如何在幕后工作的。 我们会了解到从你在浏览器地址栏中输入 google.com 直至浏览器屏幕上显示 Google 页面的整个过程中都发生了什么。

本书涉及的浏览器

目前有五大主流的浏览器,它们分别是 IE、Firefox、Safari、Chrome 和 Opera。我将从开源浏览器举例,如 Firefox、Chrome 和 Safari, 这些部分是开源的。根据 W3C 的统计,目前开源浏览器的市场份额已占很大比重。

浏览器主要功能

浏览器主要功能是呈现您在网络上选择的资源,从服务器端请求您需要的资源并最终显示在您的显示器中。 这些资源通常是 HTML ,但也可能是 PDF、图片或其他类型,资源位置由用户通过 URI 指定。更多相关信息可参考网络相关章节。

HTML 和 CSS 规范指定了浏览器该如何解析和显示 THML 文件,这些规范由 W3C(world wide web consortium) 进行维护,W3C 是制定 web 标准的组织。 当前最新版本的 HTML 版本是 5 ,最新的 CSS 版本是 3 。

旧版本的古老浏览器都只实现了规范中的某一部分,并且开发了自己独有的扩展(规范),这给网络开发者造成了很大麻烦 —— 许多兼容性问题。 就目前而言,大多数新版本浏览器都遵守并实现了大量的规范,但由于种种原因仍有浏览器或多或少的与标准规范存在出入。

各大厂商的浏览器界面其实大同小异,都具备一些通用的界面元素:

  • 用于输入网址的地址栏
  • 返回和前进按钮
  • 书签选项
  • 用于刷新和停止当前页面的刷新和停止按钮
  • 主页按钮

浏览器界面并没有在任何形式的规范中被提及,但存在一些最佳实践,这建立在浏览器多年的发展和相互之间的大量借鉴模仿之上。 HTML 规范并没有定义浏览器必须具备哪些界面元素,但列出了一些公共的清单。其中有地址栏、状态栏和工具条。当然,各浏览器也会有一些自己独有的功能实现,比如 Firefox 的下载管理。更多相��信息可参考 用户界面章节 。

浏览器整体架构

浏览器主要组件包括:

  1. 用户操作界面 - 这包括地址栏、前进/后退按钮、书签栏菜单等等。
  2. 浏览器引擎 - 用于查询和处理渲染引擎的接口
  3. 渲染引擎 - 负责显示请求的内容。比如,你请求的内容是HTML,它负责解析HTML和CSS并在屏幕上显示出来。
  4. 网络 - 用于处理网络连接,比如HTTP请求。它具有平台无关性及在各平台下的实现。
  5. UI后端- 用于绘制基本部件、如组合框和窗口。它公开了一个不针对特定平台的通用接口。在底层他调用操作系统的UI方法。
  6. javascript 解释器 - 解析和执行 javascript 代码。
  7. 数据存储 - 这是一个持久层。用于存储浏览器需要存储到本地硬盘的所有数据,如cookie、HTML5 定义的 web database 等等。

图 1:浏览器主要组件

需要注意的是chrome浏览器,他与大多数浏览器不同, 它的每一个标签页都单独拥有一个进程并拥有独立的渲染引擎实例。

组件间的通信

Firefox 和 chrome 都开发了自己特有的组建通信机制,这将会在特殊的章节中讨论。

渲染引擎

未完待续