Firefox引导加载项中的默认首选项

Firefox引导加载项中的默认首选项,firefox,firefox-addon-restartless,Firefox,Firefox Addon Restartless,Firefox引导加载项不像覆盖加载项那样读取默认首选项。 我理解在安装引导加载项时手动设置默认首选项的必要性 在初始安装之后,我想设置默认首选项的唯一好处是启用重置首选项(除非FF在其他地方跟踪它) 问题是,是否必须在每次startup()? 如果是,它们将保存在哪里(即getDefaultBranch()从哪里获取数据) 参考资料: 我已经通过电子邮件得到了答案,为了用户的利益,我在这里逐字发布了答案 来自Dave Garrett,是的开发者和作者 运行时设置的默认优先级不会保存在任何

Firefox引导加载项不像覆盖加载项那样读取默认首选项。
我理解在安装引导加载项时手动设置默认首选项的必要性

在初始安装之后,我想设置默认首选项的唯一好处是启用重置首选项(除非FF在其他地方跟踪它)

问题是,是否必须在每次
startup()

如果是,它们将保存在哪里(即
getDefaultBranch()
从哪里获取数据)

参考资料:




我已经通过电子邮件得到了答案,为了用户的利益,我在这里逐字发布了答案

来自Dave Garrett,是的开发者和作者

运行时设置的默认优先级不会保存在任何位置。没有什么可谈的 默认优先级的磁盘缓存

在Firefox启动时,从不同的位置读取默认的pref 进入首选项系统。(Firefox在omni.ja和插件中有自己的功能 将其安装在安装文件夹/文件中)此分支的副本 还将通过覆盖从prefs.js读取的用户prefs进行维护 我喜欢它。设置(用户)prefs会更改prefs中的状态 系统,它(最终)被记录在prefs.js中(同样,仅 将保存非默认的pref值)。设置默认优先级更改 prefs系统中的状态,但不会保存在任何位置。 每次启动时都需要加载它们。对于旧的标准默认值 prefs系统,Firefox会在每次启动时为您加载它们。对于 无重启扩展您需要自己完成这项工作。每个插件 启动需要加载默认的prefs

当然,您可以使用prefs而不使用默认值,但是 必须在代码中对所有地方的默认值进行硬编码。 简单地为无重启插件实现一个默认的prefs系统是一个很好的选择 更干净的解决方案,避免您可能会犯的错误

由于prefs系统仅将非默认prefs存储到磁盘,因此它还可以 极大地提高了pref被放回后的保存效率 因任何原因违约。例如,我在一个 如果用户更改了字符串pref(从v5.0开始,它现在相当紧凑) 通过更改选项中的某些内容,需要保存哪些内容 对话框中,此JSON blob将完整存储在prefs.js中。如果用户 然后恢复该更改,他们的JSON blob将恢复为 先验值。如果这等于默认值, 然后prefs.js只是不存储任何值,而是使用默认值。这 在默认情况下,减少从prefs.js开始时需要加载的内容 案例事实上,我可以使用prefs API来检测该值是否正确 当前设置为默认值,我完全绕过了从打包文件加载 JSON用户pref并直接转到完整的JSON文件,在这种情况下 甚至不需要从prefs系统加载。这是一个优化 这只适用于这种情况,但这是另一种情况 正确使用默认值可能有用的示例

关于删除
shutdown()

通常不需要,您不需要删除上的默认首选项 关闭,尽管有合理的理由认为可能是这样 这样做是正确的(但可能是个坏主意)。要明确的是,有几个 要考虑的单独停机情况:

1) Firefox关机+插件关机:在这种情况下,您不应该 执行不需要的任何关机操作以保留数据。没必要 卸载你的东西,因为应用程序关闭正在进行中,它将为 你

2) 由于插件更新导致插件关闭:在这种情况下,您需要 正确卸载已加载的所有内容,以便下一个版本可以 装得干净利落。然而,没有必要担心违约 一般来说,这里有偏好。将加载新版本的 覆盖旧的。(除非已消除违约,在这种情况下 那将在记忆中挥之不去(什么也不做)

3) 加载项禁用导致加载项关闭:保留加载的默认prefs 除了它们占用的少量内存之外,这里没有什么伤害。 如果你有很多Pref我想卸载它们可能是有保证的, 然而,这不是一个经常出现的用例。我 不必担心卸载pref,除非你有任何一种方法 Pref太多或Pref太大,以至于您在 浏览器错误控制台关于它们太大。(在这种情况下,你 (应该解决这个问题)

即使在关机时清除默认pref可能是个好主意, 删除具有用户pref的默认pref可能会导致中断。我 建议不要打扰他们