搜索服务高级概述¶
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
的访问权限。欢迎贡献以保持此页面最新。