`

一篇很棒的文章:浏览器是怎么工作的(转载至站长之家)

阅读更多

浏览器是怎样工作的(一):基础知识

译注:

前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析,DOM树的生成,节点与CSS的渲染等等,对于想学习浏览器源码的同学来说,实在是很棒的一篇科普文章。尽管对于每部分,该文的描述并不足够深入,但综合来讲,即使没兴趣学浏览器源码,也还是有一些值的学习的思想在里面的,可以权当开拓下视野,有益无害。

于是,我想分节挑重点翻译一下与大家分享。以下为译文:

我们要讨论的浏览器

当今主流浏览器有五类: Internet Explorer, Firefox, Safari, Chrome 以及 Opera。 我会基于开源浏览器 Firefox, Chrome 与 Safari(部分开源)来举例说明。 按照 W3C 浏览器统计, 当今(2009年10月), Firefox, Safari 及 Chrome 的总占有率已接近 60%,这是非常可观的。

浏览器的主要功能

浏览器的主要功能是展示网页资源,也即请求服务器并将结果显示在浏览器窗口中。资源的格式一般是HTML,但也有PDF、图片等其它各种格式。资源的定位由URL来实现。更多细节请参考“网络”一节。

浏览器释与展现HTML文件的方式是参照HTML与CSS规范来的,这些规范由 W3C (World Wide Web Consortium) Web标准化组织来维护。 当前HTML版本是 4 (http://www.w3.org/TR/html401/),HTML5正在进行中。当前CSS版本为2 (http://www.w3.org/TR/CSS2/),同样,版本3进行中。

过去几年里,各版本浏览器有许多各自的扩展,这使网页作者很难写出兼容性好的内容。如今这一严重的兼容性问题已经开始好转,各种浏览器都开始兼容标准规范。

各浏览器的用户接口有很多相同的地方,下面是一些常用的用户接口:

  • 用于输入URI的地址栏
  • 前进后退按钮
  • 书签选项
  • 刷新停止按钮,用于控制页面加载
  • 主页按钮

很奇怪的是,浏览器的用户接口并没有写进任何规范中,这种极大的相似性只是在多年的实践经验以及浏览器之间的相互借鉴中形成的。HTML5规范没有规定浏览器必须有哪些交互元素,但是列出了一些通用元素,比如地址栏, 状态栏和工具栏。 当然,特定浏览器有自己独有的特性,如Firefox的下载管理器。更多内容请参考用户接口一节。

浏览器的上层结构

浏览器的主要概念如下 (1.1):

  1. 用户接口 – 包括地址栏,前进后退,书签菜单等窗口上除了网页显示区域以外的部分。
  2. 浏览器引擎 – 查询与操作渲染引擎的接口。
  3. 渲染引擎 – 负责显示请求的内容。比如请求到HTML, 它会负责解析HTML 与 CSS 并将结果显示到窗口中。
  4. 网络 – 用于网络请求, 如HTTP请求。它包括平台无关的接口和各平台独立的实现。
  5. UI后端 – 绘制基础元件,如组合框与窗口。它提供平台无关的接口,内部使用操作系统的相应实现。
  6. JavaScript解释器。用于解析执行JavaScript代码。
  7. 数据存储。这是一个持久层。浏览器需要把所有数据存到硬盘上,如cookies。新的HTML规范 (HTML5) 规定了一个完整(虽然轻量级)的浏览器中的数据库:’web database’。

图1: 浏览器的主要概念

需要注意的是,与其它浏览器不同,chrome使用多个渲染引擎实例,每个Tab一个,每个Tab都是一个独立进程。

我会拿出一个章节来介绍每块内容。

组件间的通信

Firefox 与 Chrome 开发了一种特殊的通信架构,这会在一个特殊章节讨论。

本文作者:hfliu

文章来源:携程UED

分享到:
评论

相关推荐

    前端必读:浏览器内部工作原理.pdf

    浏览器是现代互联网中不可或缺的一部分,它使得用户能够浏览、搜索和互动网页内容。尽管浏览器种类繁多,但它们的基本工作原理是类似的。本文将详细介绍浏览器的工作原理,以及其组成部分和渲染流程。 一、浏览器的...

    浏览器的工作原理:现代网络浏览器幕后揭秘

    这是一篇全面介绍 Webkit 和 Gecko内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果。在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据,并花了很多时间来研读网络浏览器的源代码。...

    setTimeout应用(模拟站长之家导航)

    在这个场景中,标题提到的"setTimeout应用(模拟站长之家导航)"可能是指利用`setTimeout`来创建一个类似站长之家网站的动态导航效果,比如滚动公告、延时加载或其他交互式功能。下面我们将详细探讨`setTimeout`的工作...

    浏览器的工作原理:现代网络浏览器幕后揭秘.pdf

    这是一篇全面介绍 WebKit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果。在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研读网络...

    浏览器内部工作原理

    本篇文章将深入探讨浏览器的各个组件及其功能,以便更好地理解从输入URL到页面显示的整个过程。 首先,浏览器的主要功能是获取并呈现Web资源,这些资源通常以HTML、CSS、JavaScript和其他格式存在。用户通过地址栏...

    易语言浏览器易语言浏览器

    "易语言浏览器"是基于易语言开发的一种浏览器应用,可能是为了实现一个用户友好的、本土化的网络浏览体验。在深入探讨这个主题之前,我们首先需要理解易语言的基本概念以及浏览器的工作原理。 易语言的设计理念是...

    漫画之家-漫画之家系统-漫画之家系统源码-漫画之家管理系统-基于springboot的漫画之家系统-漫画之家管理系统java代码

    漫画之家-漫画之家系统-漫画之家系统源码-漫画之家管理系统-漫画之家管理系统java代码-漫画之家系统设计与实现-基于springboot的漫画之家系统-基于Web的漫画之家系统设计与实现-漫画之家网站-漫画之家网站代码-漫画...

    浏览器源码C++

    这个项目旨在提供一个基础的浏览器框架,尽管它的界面未经美化,但对于学习和理解浏览器的工作原理,尤其是对C++编程语言的应用,是一个很好的实践案例。 在C++中构建浏览器涉及多个关键知识点,包括: 1. **网络...

    浏览器源码(c++)

    本篇文章将围绕“浏览器源码(C++)”这一主题,介绍一些关键知识点。 1. **网络编程基础**: - **Socket编程**:浏览器的核心部分之一是网络通信模块,它通过Socket接口与服务器进行数据交换。Socket是网络通信的...

    VC浏览器(功能十分齐全,绝不是一两分钟写的那种代码)

    【VC浏览器】是一款由大牛使用Visual C++ 6(简称VC6)开发的浏览器软件,在Windows 2000操作系统环境下构建。...对于希望了解浏览器工作原理或者提升C++编程能力的人来说,这是一个难得的实践机会。

    自己做的个浏览器,完全可以用的

    "自己做的个浏览器,完全可以用的" 这个项目表明你已经成功地构建了一个自定义的浏览器,这涉及到许多IT领域的知识。 首先,我们来讨论浏览器的工作原理。一个基本的浏览器主要由以下几个核心组件构成: 1. **用户...

    c++打造的浏览器设计源码

    这个开源项目对于学习和理解浏览器的工作原理以及C++在系统级编程中的应用具有很高的价值。下面我们将深入探讨其中涉及的重要知识点。 1. **C++基础与高级特性**:C++是一种强大的、面向对象的编程语言,它提供了...

    网址之家整站源码1.0

    【网址之家整站源码1.0】是一个专为初学者和资源使用者设计的导航网站源代码,旨在提供一站式的网络资源入口。该源码包含了完整的网站设计与功能实现,让用户能够快速搭建自己的个性化导航平台。 一、源码概述: ...

    【RPA之家转载AA视频教程】38.Recorder.rar

    【RPA之家】提供的【RPA之家转载AA视频教程】38.Recorder.rar是一个关于RPA(Robotic Process Automation)的教程,主要聚焦于Automation Anywhere的通用记录器(Universal Recorder)工具。这个工具是RPA流程自动化...

    浏览器是如何工作的?(阶段一) .xmind

    浏览器的基本实现原理,包括协议,状态码,请求方式等

    浏览器的工作原理:新式网络浏览器幕后揭秘

    这是一篇全面介绍 Webkit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果。在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研读网络...

    织梦仿IT之家带wap手机版

    【标题】:“织梦仿IT之家带wap手机版”是一个基于织梦内容管理系统(DedeCMS)构建的网站模板,特别设计用于创建与IT之家类似的在线平台,并且支持移动设备访问,提供良好的WAP(无线应用协议)体验。 【描述】:...

Global site tag (gtag.js) - Google Analytics