搜索服务高级概述¶
SearchService 是 Firefox 浏览器中管理搜索引擎的核心组件。
下图是 SearchService 的高级系统上下文图。该图说明了哪些系统与 SearchService 交互,以便它能够完成管理搜索引擎的任务。
该图和描述是对 SearchService 职责的简化。它特别强调了 SearchService 如何在启动时向浏览器提供搜索引擎。但是,SearchService 还有许多其他职责,在图中未列出,例如在各种项目发生变化时维护和管理搜索引擎,例如用户的区域或语言环境、从远程设置接收到的配置更改、搜索引擎数据接收到的更新。尽管如此,该图还是概括了 SearchService 最常与之交互的主要组件。
示意图¶
示意图描述¶
以下步骤与示意图上的编号相同。示意图上的编号 1 由下面的编号 1 描述。
当用户打开 Firefox 浏览器时,代码开始构建浏览器 UI 组件。在此启动阶段,我们有各种系统向
SearchService发出调用。例如,browser.js 调用Services.search.getDefault以获取默认搜索引擎。SearchService需要来自Extension System、SearchSettings和Remote Settings的信息,以便以正确的顺序构建正确的引擎,并将引擎列表返回给调用者。a) 首先,
SearchService请求搜索配置。SearchService调用 SearchEngineSelector.fetchEngineConfiguration,后者会调用 Remote Settings 获取搜索配置。Remote Settings 不会在启动时从远程数据库中获取搜索配置。相反,Remote Settings 会尝试从其本地数据库加载 搜索配置转储文件,如果该文件为空,则会将转储文件加载到其本地数据库中。只有在启动后,Remote Settings 才会在必要时连接到远程数据库。通过在启动后连接,可以避免潜在的网络请求,从而可能延迟启动。b) 其次,
SearchService从 SearchSettings 中获取 JSON 文件。此 JSON 文件包含保存在用户计算机上的搜索引擎元数据。这些信息有助于SearchService记住用户为搜索引擎自定义的设置。c) 第三,扩展系统 将扩展数据传递给
SearchService。此时,SearchService仅安装用户安装的搜索扩展。完成步骤 2a、2b 和 2c 后,
SearchService已完成从System Add-ons、SearchSettings和Remote Settings收集搜索引擎数据。现在,SearchService可以构建不同类型的搜索引擎。SearchService通过创建 SearchEngines 的新实例来创建 应用程序提供的、附加组件的、Open Search 或企业策略搜索引擎。SearchService将引擎返回给请求它的调用者。例如,SearchService将默认搜索引擎传回给browser.js,即最初请求它的系统。
更新¶
此页面截至 2024 年 4 月 18 日更新。如果示意图或描述过时,请在 Firefox Search 共享驱动器中的 Firefox Search > Search Service Documentation 文件夹中查找对 Search Service Diagram 的访问权限。欢迎贡献以保持此页面最新。