logo资料库

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

第1页 / 共68页
第2页 / 共68页
第3页 / 共68页
第4页 / 共68页
第5页 / 共68页
第6页 / 共68页
第7页 / 共68页
第8页 / 共68页
资料共68页,剩余部分请下载后查看
By Tali Garsiel and Paul Irish : 5th, 2011 Comments: 33 WebKit · Gecko · (Paul Irish) Chrome 在 IE 占据 90% 市场份额的年代,我们除了把浏览器当成一个“黑箱”,什么也做不了。但是现在,开放源代码的浏览器拥有了过半的市场份额,因此,是时候来揭开神秘的面纱,一探网络浏览器的内幕了。呃,里面只有数以百万行计的 C++代码...浏 览 器 的 工 作 原 理 : 新 式 网 络 浏 览 器 幕 后 揭 秘 浏 览 器 的 工 作 原 理 : 新 式 网 络 浏 览 器 幕 后 揭 秘 已 发 布 八 月 这 是 一 篇 全 面 介 绍 和 内 部 操 作 的 入 门 文 章 , 是 以 色 列 开 发 人 员 塔 利 加 希 尔 大 量 研 究 的 成 果 。 在 过 去 的 几 年 中 , 她 查 阅 了 所 有 公 开 发 布 的 关 于 浏 览 器 内 部 机 制 的 数 据 ( 请 参 见 资 源 ) , 并 花 了 很 多 时 间 来 研 读 网 络 浏 览 器 的 源 代 码 。 她 写 道 : 塔 利 在 她 的 网 站 上 公 布 了 自 己 的 研 究 成 果 , 但 是 我 们 觉 得 它 值 得 让 更 多 的 人 来 了 解 , 所 以 我 们 在 此 重 新 整 理 并 公 布 。 作 为 一 名 网 络 开 发 人 员 , 学 习 浏 览 器 的 内 部 工 作 原 理 将 有 助 于 您 作 出 更 明 智 的 决 策 , 并 理 解 那 些 最 佳 开 发 实 践 的 个 中 缘 由 。 尽 管 这 是 一 篇 相 当 长 的 文 档 , 但 是 我 们 建 议 您 花 些 时 间 来 仔 细 阅 读 ; 读 完 之 后 , 您 肯 定 会 觉 得 所 费 不 虚 。 保 罗 爱 丽 诗 , 浏 览 器 开 发 人 员 事 务 部 序 言
google.com Google 1. 2. 3. 1. 2. 3. 1. 2. 3. 1. DOM - 1. 法2. 3. 译4. 5. 6. 7. 2. HTML 1. HTML 2. 3. HTML DTD 网 络 浏 览 器 很 可 能 是 使 用 最 广 的 软 件 。 在 这 篇 入 门 文 章 中 , 我 将 会 介 绍 它 们 的 幕 后 工 作 原 理 。 我 们 会 了 解 到 , 从 您 在 地 址 栏 输 入 直 到 您 在 浏 览 器 屏 幕 上 看 到 首 页 的 整 个 过 程 中 都 发 生 了 些 什 么 。 简 介 我 们 要 讨 论 的 浏 览 器 浏 览 器 的 主 要 功 能 浏 览 器 的 高 层 结 构 呈 现 引 擎 呈 现 引 擎 主 流 程 主 流 程 示 例 解 析 和 树 构 建 解 析 综 述 语 解 析 器 和 词 法 分 析 器 的 组 合 翻 解 析 示 例 词 汇 和 语 法 的 正 式 定 义 解 析 器 类 型 自 动 生 成 解 析 器 解 析 器 语 法 定 义 非 与 上 下 文 无 关 的 语 法 简 介 目 录
4. DOM 5. 6. 7. 8. 9. 3. CSS 1. WebKit CSS 4. 1. 2. 3. 4. 1. 本2. 3. DOM 1. 2. Firefox 3. 4. 1. 2. 1. 2. 3. 4. 5. 1. Dirty 2. 3. 解 析 算 法 标 记 化 算 法 树 构 建 算 法 解 析 结 束 后 的 操 作 浏 览 器 的 容 错 机 制 解 析 解 析 器 处 理 脚 本 和 样 式 表 的 顺 序 脚 预 解 析 样 式 表 呈 现 树 构 建 呈 现 树 和 树 的 关 系 构 建 呈 现 树 的 流 程 样 式 计 算 共 享 样 式 数 据 规 则 树 结 构 划 分 使 用 规 则 树 计 算 样 式 上 下 文 对 规 则 进 行 处 理 以 简 化 匹 配 以 正 确 的 层 叠 顺 序 应 用 规 则 样 式 表 层 叠 顺 序 特 异 性 规 则 排 序 渐 进 式 处 理 布 局 位 系 统 全 局 布 局 和 增 量 布 局 异 步 布 局 和 同 步 布 局
4. 化5. 6. 7. 1. 2. 3. Firefox 4. WebKit 6. 7. 8. 1. 9. CSS2 1. 布2. CSS 3. 4. 5. 1. 2. 3. 6. 10. Safari Chrome Firefox StatCounter Chrome Internet Explorer Firefox Opera Safari 2011 8 Firefox 优 布 局 处 理 宽 度 计 算 换 行 绘 制 全 局 绘 制 和 增 量 绘 制 绘 制 顺 序 显 示 列 表 矩 形 存 储 动 态 变 化 呈 现 引 擎 的 线 程 事 件 循 环 可 视 化 模 型 画 框 模 型 定 位 方 案 框 类 型 定 位 相 对 定 位 浮 动 定 位 绝 对 定 位 和 固 定 定 位 分 层 展 示 资 源 目 前 使 用 的 主 流 浏 览 器 有 五 个 : 、 、 、 浏 览 器 和 。 本 文 中 以 开 放 源 代 码 浏 览 器 为 例 , 即 、 浏 览 器 和 ( 部 分 开 源 ) 。 根 据 浏 览 器 统 计 数 据 , 目 前 ( 年 月 ) 、 我 们 要 讨 论 的 浏 览 器
Safari Chrome 60% HTML URI HTML HTML W3C CSS PDF URI HTML5 Firefox 和 浏 览 器 的 总 市 场 占 有 率 将 近 。 由 此 可 见 , 如 今 开 放 源 代 码 浏 览 器 在 浏 览 器 市 场 中 占 据 了 非 常 坚 实 的 部 分 。 浏 览 器 的 主 要 功 能 就 是 向 服 务 器 发 出 请 求 , 在 浏 览 器 窗 口 中 展 示 您 选 择 的 网 络 资 源 。 这 里 所 说 的 资 源 一 般 是 指 文 档 , 也 可 以 是 、 图 片 或 其 他 的 类 型 。 资 源 的 位 置 由 用 户 使 用 ( 统 一 资 源 标 示 符 ) 指 定 。 浏 览 器 解 释 并 显 示 文 件 的 方 式 是 在 和 规 范 中 指 定 的 。 这 些 规 范 由 网 络 标 准 化 组 织 ( 万 维 网 联 盟 ) 进 行 维 护 。 多 年 以 来 , 各 浏 览 器 都 没 有 完 全 遵 从 这 些 规 范 , 同 时 还 在 开 发 自 己 独 有 的 扩 展 程 序 , 这 给 网 络 开 发 人 员 带 来 了 严 重 的 兼 容 性 问 题 。 如 今 , 大 多 数 的 浏 览 器 都 是 或 多 或 少 地 遵 从 规 范 。 浏 览 器 的 用 户 界 面 有 很 多 彼 此 相 同 的 元 素 , 其 中 包 括 : 用 来 输 入 的 地 址 栏 前 进 和 后 退 按 钮 书 签 设 置 选 项 用 于 刷 新 和 停 止 加 载 当 前 文 档 的 刷 新 和 停 止 按 钮 用 于 返 回 主 页 的 主 页 按 钮 奇 怪 的 是 , 浏 览 器 的 用 户 界 面 并 没 有 任 何 正 式 的 规 范 , 这 是 多 年 来 的 最 佳 实 践 自 然 发 展 以 及 彼 此 之 间 相 互 模 仿 的 结 果 。 也 没 有 定 义 浏 览 器 必 须 具 有 的 用 户 界 面 元 素 , 但 列 出 了 一 些 通 用 的 元 素 , 例 如 地 址 栏 、 状 态 栏 和 工 具 栏 等 。 当 然 , 各 浏 览 器 也 可 以 有 自 己 独 特 的 功 能 , 比 如 的 下 载 管 理 器 。 浏 览 器 的 主 要 功 能 浏 览 器 的 高 层 结 构
(1.1) / HTML CSS HTTP - - - - 1. 2. 3. 4. 5. HTML - 6. JavaScript 7. Cookie ” JavaScript HTML (HTML5) “ 浏 览 器 的 主 要 组 件 为 : 用 户 界 面 包 括 地 址 栏 、 前 进 后 退 按 钮 、 书 签 菜 单 等 。 除 了 浏 览 器 主 窗 口 显 示 的 您 请 求 的 页 面 外 , 其 他 显 示 的 各 个 部 分 都 属 于 用 户 界 面 。 浏 览 器 引 擎 在 用 户 界 面 和 呈 现 引 擎 之 间 传 送 指 令 。 呈 现 引 擎 负 责 显 示 请 求 的 内 容 。 如 果 请 求 的 内 容 是 , 它 就 负 责 解 析 和 内 容 , 并 将 解 析 后 的 内 容 显 示 在 屏 幕 上 。 网 络 用 于 网 络 调 用 , 比 如 请 求 。 其 接 口 与 平 台 无 关 , 并 为 所 有 平 台 提 供 底 层 实 现 。 用 户 界 面 后 端 用 于 绘 制 基 本 的 窗 口 小 部 件 , 比 如 组 合 框 和 窗 口 。 其 公 开 了 与 平 台 无 关 的 通 用 接 口 , 而 在 底 层 使 用 操 作 系 统 的 用 户 界 面 方 法 。 解 释 器 。 用 于 解 析 和 执 行 代 码 。 数 据 存 储 。 这 是 持 久 层 。 浏 览 器 需 要 在 硬 盘 上 保 存 各 种 数 据 , 例 如 。 新 的 规 范 定 义 了 网 络 数 据 库 , 这 是 一 个 完 整 ( 但 是 轻 便 ) 的 浏 览 器 内 数 据 库 。
Chrome ... “ ” HTML XML PDF PDF CSS HTML 图 : 浏 览 器 的 主 要 组 件 。 值 得 注 意 的 是 , 和 大 多 数 浏 览 器 不 同 , 浏 览 器 的 每 个 标 签 页 都 分 别 对 应 一 个 呈 现 引 擎 实 例 。 每 个 标 签 页 都 是 一 个 独 立 的 进 程 。 呈 现 引 擎 的 作 用 嘛 当 然 就 是 呈 现 了 , 也 就 是 在 浏 览 器 的 屏 幕 上 显 示 请 求 的 内 容 。 默 认 情 况 下 , 呈 现 引 擎 可 显 示 和 文 档 与 图 片 。 通 过 插 件 ( 或 浏 览 器 扩 展 程 序 ) , 还 可 以 显 示 其 他 类 型 的 内 容 ; 例 如 , 使 用 查 看 器 插 件 就 能 显 示 文 档 。 但 是 在 本 章 中 , 我 们 将 集 中 介 绍 其 主 要 用 途 : 显 示 使 用 格 式 化 的 内 容 和 图 片 。 呈 现 引 擎
“ ” WebKit WebKit Apple Firefox Firefox Safari Chrome Gecko Chrome Safari Mozilla webkit.org Linux Windows 8000 ” DOM HTML HTML CSS “ ” “ - 本 文 所 讨 论 的 浏 览 器 ( 、 浏 览 器 和 ) 是 基 于 两 种 呈 现 引 擎 构 建 的 。 使 用 的 是 , 这 是 公 司 自 制 的 呈 现 引 擎 。 而 和 浏 览 器 使 用 的 都 是 。 是 一 种 开 放 源 代 码 呈 现 引 擎 , 起 初 用 于 平 台 , 随 后 由 公 司 进 行 修 改 , 从 而 支 持 苹 果 机 和 。 有 关 详 情 , 请 参 阅 。 呈 现 引 擎 一 开 始 会 从 网 络 层 获 取 请 求 文 档 的 内 容 , 内 容 的 大 小 一 般 限 制 在 个 块 以 内 。 然 后 进 行 如 下 所 示 的 基 本 流 程 : 图 : 呈 现 引 擎 的 基 本 流 程 。 呈 现 引 擎 将 开 始 解 析 文 档 , 并 将 各 标 记 逐 个 转 化 成 内 容 树 上 的 节 点 。 同 时 也 会 解 析 外 部 文 件 以 及 样 式 元 素 中 的 样 式 数 据 。 中 这 些 带 有 视 觉 指 令 的 样 式 信 息 将 用 于 创 建 另 一 个 树 结 构 : 呈 现 树 。 呈 现 树 包 含 多 个 带 有 视 觉 属 性 ( 如 颜 色 和 尺 寸 ) 的 矩 形 。 这 些 矩 形 的 排 列 顺 序 就 是 它 们 将 在 屏 幕 上 显 示 的 顺 序 。 呈 现 树 构 建 完 毕 之 后 , 进 入 布 局 处 理 阶 段 , 也 就 是 为 每 个 节 点 分 配 一 个 应 出 现 在 屏 幕 上 的 确 切 坐 标 。 下 一 个 阶 段 是 绘 制 呈 现 引 擎 会 遍 历 呈 现 树 , 由 用 户 界 面 后 端 层 将 每 个 节 点 绘 制 出 来 。 呈 现 引 擎 主 流 程
分享到:
收藏