《现代前端技术解析》笔记

  1. 浏览器向服务器发送请求的过程:
    • 在 接收 到 用户 输入 的 网址 后, 浏览器 会 开启 一个 线程 来处 理 这个 请求, 对 用户 输入 的 URL 地址 进行 分析 判断, 如果 是 HTTP 协议 就 按照 HTTP 方式 来 处理。
    • 调用 浏览器 引擎 中的 对应 方法, 比如 WebView 中的 loadUrl 方法, 分析 并 加载 这个 URL 地址。
    • 通过 DNS 解析 获取 该 网 站 地址 对应 的 IP 地址, 查询 完成 后 连同 浏览器 的 Cookie、 userAgent 等 信息 向 网 站 目的 IP 发出 GET 请求。
    • 进行 HTTP 协议 会话, 浏览器 客户 端向 Web 服务器 发送 报文。
    • 进 入网 站 后 台上 的 Web 服务器 处理 请求, 如 Apache、 Tomcat、 Node. js 等 服务器。
    • 进入 部署 好的 后端 应用, 如 PHP、 Java、 JavaScript、 Python 等 后端 程序, 找到 对应 的 请求 处理 逻辑, 这期 间 可能 会 读取 服务器 缓存 或 查询 数据库 等。
    • 服务器 处理 请求 并 返回 响应 报文, 此时 如果 浏览器 访问 过 该 页面, 缓存 上有 对应 资源, 会 与 服务器 最后 修改 记录 对比, 一致 则 返回 304, 否则 返回 200 和 对应 的 内容。
    • 浏览器 开始 下载 HTML 文档( 响应 报头 状态 码 为 200 时) 或者 从 本地 缓存 读取 文件 内容( 浏览器 缓存 有效 或 响应 报头 状态 码 为 304 时)。
  2. 通常 我们 认为 浏览器 主 要由 七 部分 组成: 用户 界面、 网络、 JavaScript 引擎、 渲染 引擎、 UI 后端、 JavaScript 解释器 和 持久 化 数据 存储。 用户 界面 包括 浏览器 中 可见 的 地址 输入 框、 浏览器 前进 返回 按钮、 打开 书签、 打开 历史 记录 等 用户 可操作 的 功能 选项。 浏览器 引擎 可以 在用 户 界面 和 渲染 引擎 之间 传送 指令 或在 客户 端 本地 缓存 中 读写 数据 等, 是 浏览器 中 各个 部分 之间 相互 通信 的 核心。 浏览器 渲染 引擎 的 功能 是 解析 DOM 文档 和 CSS 规则 并将 内容 排版 到 浏览器 中 显示 有 样式 的 界面, 也有 人称 之为 排版 引擎, 我们 常说 的 浏览器 内核 主要 指的 就是 渲染 引擎。 网络 功能 模块 则是 浏览器 开启 网络 线程 发送 请求 或 下载 资源 文件 的 模块, 例如 DOM 树 解析 过程中 请求 静态 资源 首先 是 通过 浏览器 中的 网络 模块 发起 的, UI 后端 则用 于 绘制 基本 的 浏览器 窗 口内 控 件, 比如 组合 选择 框、 按钮、 输入 框 等。 JavaScript 解释器 则是 浏览器 解释 和 执行 JavaScript 脚本 的 部分, 例如 V8 引擎。 浏览器 数据 持久 化 存储 则 涉及 cookie、 localStorage 等 一些 客户 端 存储 技术, 可以 通过 浏览器 引擎 提供 的 API 进行 调用。

![~5]BN@B%1NTE]]N3$R7OEVY.png](https://upload-images.jianshu.io/upload_images/10500440-a35c083989fb87c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

你可能感兴趣的:(《现代前端技术解析》笔记)