Firefox/优化
此页面包含高级 Firefox 配置选项和性能优化。
性能
改进 Firefox 性能分为两种参数:一种是在运行 Firefox 时可以输入或以开发者预期的方式修改其配置的参数,另一种是涉及外部程序或脚本的高级过程。
本节包含用于性能优化的高级 Firefox 选项。有关更多信息,请参阅 这些 MozillaZine 文章。
更改性能设置
Firefox 会自动使用基于计算机硬件规格的设置 [1]。
可以在“首选项”中或通过在 about:config
中手动将 dom.ipc.processCount
值更改为 1-8
,并将 browser.preferences.defaultPerformanceSettings.enabled
更改为 false
来调整这些设置。
但是,您可能希望手动调整此设置,以进一步提高性能,甚至在低端设备上降低内存使用量。
在这种情况下,当前用户的内容进程限制已增加到4
$ ps -e | grep 'Web Content'
13991 tty1 00:00:04 Web Content 14027 tty1 00:00:09 Web Content 14031 tty1 00:00:20 Web Content 14040 tty1 00:00:26 Web Content
WebRender
WebRender 是一个高性能、GPU 加速的 2D 渲染引擎,用 Rust 编写。它是驱动 Firefox 和 Servo 浏览器引擎项目的合成器。截至 Firefox 93,它默认对所有用户启用,并且如果运行它的硬件 至少支持 OpenGL 3.0 或 OpenGL ES 3.0(截至 2021-04) 并且 满足最低驱动程序要求,则默认使用硬件渲染。如果您的系统不满足这些要求,它将回退到使用 Software Webrender 的软件渲染。
如果您在使用最新驱动程序的机器上遇到渲染问题,您可以通过在 about:config
中将 gfx.webrender.software
首选项设置为 true
来强制启用 Software Webrender。
关闭磁盘缓存
加载的每个对象(html 页面、jpeg 图像、css 样式表、gif 横幅)都保存在 Firefox 缓存中,以便将来使用,而无需再次下载。据估计,只有一小部分对象会被重用,通常约为 30%。这是因为对象过期时间非常短、更新或仅仅是用户行为(加载新页面而不是返回已访问的页面)。Firefox 缓存分为内存缓存和磁盘缓存,后者导致频繁的磁盘写入:新加载的对象被写入内存,而较旧的对象被删除。
另一种方法是使用 about:config
设置
- 将
browser.cache.disk.enable
设置为false
- 验证
browser.cache.memory.enable
是否设置为true
,有关此选项的更多信息,请参见 browser.cache.memory Mozilla 文章 - 添加条目
browser.cache.memory.capacity
并将其设置为您想要保留的 KB 量,或者设置为-1
以进行 自动 缓存大小选择(跳过此步骤与将值设置为-1
具有相同的效果)- “自动”大小选择基于一个十年前的表,该表仅包含系统内存为 8GB 或更低的系统的设置。以下公式非常接近此表,可用于更动态地设置 Firefox 缓存:
41297 - (41606 / (1 + ((RAM / 1.16) ^ 0.75)))
,其中RAM
以 GB 为单位,结果以 KB 为单位。
- “自动”大小选择基于一个十年前的表,该表仅包含系统内存为 8GB 或更低的系统的设置。以下公式非常接近此表,可用于更动态地设置 Firefox 缓存:
此方法有一些缺点
- 如果浏览器崩溃或重启后,当前浏览的网页内容会丢失,可以使用 anything-sync-daemon 或任何类似的定期同步脚本来避免这种情况,以便缓存定期复制到驱动器
- 需要为每个用户单独配置设置
将磁盘缓存移动到 RAM
另一种方法是将“磁盘”缓存移动到 RAM 磁盘,为您提供介于上述两者之间的解决方案。缓存现在将在 Firefox 运行之间(包括 Firefox 崩溃恢复)保留,但在重启(包括操作系统崩溃)时将被丢弃。
要执行此操作,请转到 about:config
并将 browser.cache.disk.parent_directory
设置为 /run/user/UID/firefox
,其中 UID
是您的用户 ID,可以通过运行 id -u
获取。
打开 about:cache
以验证新的磁盘缓存位置。
延长会话信息记录间隔
Firefox 定期将当前会话状态(打开的 URL、cookie、历史记录和表单数据)存储到磁盘。它用于在崩溃时恢复以前的会话。默认设置是每 15 秒保存一次会话,从而导致频繁的磁盘访问。
例如,要将保存间隔增加到 10 分钟(600000 毫秒),请在 about:config
中将 browser.sessionstore.interval
的设置更改为 600000
要完全禁用此功能,请将 browser.sessionstore.resume_from_crash
更改为 false
。
整理配置文件的 SQLite 数据库碎片
Firefox 将书签、历史记录、密码保存在 SQLite 数据库中。SQLite 数据库会随着时间的推移变得碎片化,并出现空闲空间。但是,由于没有管理进程检查和优化数据库,这些因素最终会导致性能下降。改进启动和一些其他书签和历史记录相关任务的一个好方法是整理碎片并从这些数据库中修剪未使用的空间。
您可以使用 profile-cleaner 来执行此操作,在 Firefox 未运行时
SQLite 数据库 | 整理前大小 | 整理后大小 | % 变化 |
---|---|---|---|
urlclassifier3.sqlite | 37 M | 30 M | 19 % |
places.sqlite | 16 M | 2.4 M | 85 % |
Firefox 提供了一个工具来整理碎片并优化 places 数据库,这是大多数速度减慢和配置文件损坏的根源。要访问此工具,请打开 about:support
页面,搜索 Places Database
并单击 Verify Integrity
按钮。
通过 tmpfs 将整个配置文件缓存到 RAM 中
如果系统有剩余内存,则可以使用 tmpfs
来缓存整个配置文件目录,这可能会提高 Firefox 的响应速度。
禁用 Pocket
如果您不使用 Pocket 服务,您可能希望通过在 about:config
中将 extensions.pocket.enabled
设置为 false 来禁用它。
外观
字体
请参阅主文章:字体配置
配置 DPI 值
如果系统的 DPI 低于 96,修改以下值可以帮助改善字体在 Firefox 中的外观。默认情况下,Firefox 使用 96,并且仅当系统 DPI 值更高时才使用系统 DPI。要强制使用系统 DPI,而不管其值如何,请在地址栏中键入 about:config
并将 layout.css.dpi
设置为 0。
请注意,上述方法仅影响 Firefox 用户界面的 DPI 设置。网页内容仍然使用 DPI 值 96,这可能看起来很难看,或者在高分辨率显示器的情况下,可能渲染得太小而无法阅读。一个解决方案是将 layout.css.devPixelsPerPx
更改为系统 DPI 除以 96。例如,如果您的系统 DPI 为 144,则要添加的值为 144/96 = 1.5。将 layout.css.devPixelsPerPx
更改为 1.5 使网页内容使用 DPI 144,这看起来好得多。
如果这导致 Firefox 103 之后的版本中字体变得不必要地大,请将 browser.display.os-zoom-behavior
更改为零。然后,在 about:config
搜索栏中键入 ui.textScaleFactor
,选择“数字”旁边的圆圈,单击加号按钮以添加设置键,并将其值编辑为 layout.css.devPixelsPerPx
值的 100 倍。例如,如果后者设置为 1.25,则 ui.textScaleFactor
应设置为 125。
另请参阅 HiDPI#Firefox 以获取有关 HiDPI 显示器的信息,并参阅 [2] 以计算 DPI。
来自 Microsoft Windows 的默认字体设置
以下是在 Microsoft Windows 中安装 Firefox 时的默认字体首选项。许多网站使用 Microsoft 字体。
Proportional: Serif Size (pixels): 16 Serif: Times New Roman Sans-serif: Arial Monospace: Courier New Size (pixels): 13
通用用户界面 CSS 设置
可以通过编辑 ~/.mozilla/firefox/profile/chrome/
中的 userChrome.css
和 userContent.css
文件来修改 Firefox 的用户界面(profile_dir 的形式为 hash.name,其中 hash 是一个 8 个字符的看似随机的字符串,而配置文件name 通常是 default)。您可以通过在 URL 栏中键入 about:support
,并在 Firefox 文档中描述的 应用程序基础
部分下搜索 配置文件目录
字段来找出确切的名称。
chrome/
文件夹和userChrome.css
/userContent.css
文件可能不一定存在,因此可能需要创建它们。- 必须在
about:config
中启用toolkit.legacyUserProfileCustomizations.stylesheets
。
本节仅处理修改 Firefox 用户界面的 userChrome.css
文件,而不处理网页。
更改界面字体
此设置有效地覆盖了全局 GTK 字体首选项,并且不影响网页,仅影响用户界面本身
~/.mozilla/firefox/profile/chrome/userChrome.css
* { font-family: "FONT_NAME"; }
隐藏按钮图标
启用纯文本按钮
~/.mozilla/firefox/profile/chrome/userChrome.css
.button-box .button-icon { display: none; }
隐藏各种标签页按钮
这些设置隐藏了出现在标签栏水平边缘的箭头、切换“所有标签页”下拉列表的按钮以及创建新标签页的加号按钮。
~/.mozilla/firefox/profile/chrome/userChrome.css
/* Tab bar */ toolbarbutton#scrollbutton-up, toolbarbutton#scrollbutton-down { /* Hide tab scroll buttons */ display: none; } .browser-toolbar > * #alltabs-button { /* Hide tab drop-down list */ display: none; } .browser-toolbar > * #new-tab-button { /* Hide new-tab button */ display: none; }
垂直/树状标签页
要将标签栏放置在侧边栏/树状结构中,请使用以下插件之一
Firefox 插件无法通过其扩展 API 隐藏原生标签栏 - 要执行此操作,请按照插件的设置/高级说明进行操作。
隐藏标题栏和窗口边框
要用标签栏替换标题栏,请在 about:config
中将 browser.tabs.inTitlebar
设置为 1
。
或者转到“更多工具”,然后转到“自定义工具栏”,然后在左下角找到名为“标题栏”的复选框。取消选中它。如果复选框丢失,请确保 XDG_CURRENT_DESKTOP
环境变量已正确设置和/或 MOZ_GTK_TITLEBAR_DECORATION
环境变量设置为“client”。
自动隐藏书签工具栏
~/.mozilla/firefox/profile/chrome/userChrome.css
#PersonalToolbar { visibility: collapse !important; } #navigator-toolbox:hover > #PersonalToolbar { visibility: visible !important; }
移除侧边栏宽度限制
~/.mozilla/firefox/profile/chrome/userChrome.css
/* remove maximum/minimum width restriction of sidebar */ #sidebar { max-width: none !important; min-width: 0px !important; }
使用深色 GTK 主题时输入字段不可读
当使用深色 GTK 主题时,可能会遇到输入字段和文本字段不可读的 Internet 页面(例如,白色背景上的白色文本输入字段,或深色背景上的黑色文本)。这可能是因为网站仅设置了背景色或文本颜色,而 Firefox 从主题中获取了另一个颜色。要防止 Firefox 在网页中分别使用主题颜色和深色主题,请确认 browser.display.use_system_colors
和 widget.content.allow-gtk-dark-theme
在 about:config
中设置为 false
。
否则,如果之前的修改没有解决问题,则可以通过在 about:config
中添加名为 widget.content.gtk-theme-override
的新字符串,并将其设置为浅色主题(如 Breeze:light
或 Adwaita:light
)来使用浅色 GTK 主题启动 Firefox。
使用 CSS 覆盖输入字段颜色
扩展程序 Text Contrast for Dark Themes 会根据需要设置另一种颜色以保持对比度。
或者,在 userContent.css
中或使用 stylus 插件 为所有网页显式设置标准颜色。样式表通常位于您的配置文件文件夹中(访问 about:profiles
获取路径),在 chrome/userContent.css
中,如果不存在,您可以在那里创建它。
以下设置将输入字段设置为标准黑色文本/白色背景;两者都可以被显示的站点覆盖,以便颜色按预期显示
urlbar
和 searchbar
为 white
,请删除前两个 :not
css 选择器。input:not(.urlbar-input):not(.textbox-input):not(.form-control):not([type='checkbox']):not([type='radio']), textarea, select { -moz-appearance: none !important; background-color: white; color: black; } #downloads-indicator-counter { color: white; }
更改 GTK 主题
要强制 Firefox 对网页内容和 UI 都使用浅色主题(例如 Adwaita),请参阅 GTK#主题。
仅为内容进程更改 GTK 主题
要强制 Firefox 仅对网页内容使用浅色主题(例如 Adwaita)
- 在地址栏中打开
about:config
。 - 创建一个新的
widget.content.gtk-theme-override
字符串类型条目(鼠标右键
> 新建 > 字符串)。 - 将值设置为用于渲染目的的浅色主题(例如
Adwaita:light
)。 - 重启 Firefox。
网页内容 CSS 设置
本节介绍 userContent.css
文件,您可以在其中为网页内容添加自定义 CSS 规则。对此文件的更改将在浏览器重启后生效。
此文件可用于进行小修复或将个人样式应用于经常访问的网站。来自 userstyles.org 等来源提供了流行网站的自定义样式表。您可以安装一个插件,例如 superUserContent[死链 2020-03-29 ⓘ] 以管理主题。此插件创建目录 chrome/userContent.css.d
,并在页面刷新时将更改应用于其中的 CSS 文件。
导入其他 CSS 文件
~/.mozilla/firefox/profile/chrome/userContent.css
@import url("./imports/some_file.css");
阻止域的特定部分
~/.mozilla/firefox/profile/chrome/userContent.css
@-moz-document domain(example.com) { div#header { background-image: none !important; } }
在 PDF 文件链接后添加 [pdf]
~/.mozilla/firefox/profile/chrome/userContent.css
/* add '[pdf]' next to links to PDF files */ a[href$=".pdf"]:after { font-size: smaller; content: " [pdf]"; }
鼠标和键盘
鼠标滚轮滚动速度
要修改鼠标滚轮滚动速度的默认值(即加速),请转到 about:config
并搜索 mousewheel.acceleration
。这将显示可用选项,修改以下内容
- 将
mousewheel.acceleration.start
设置为1
。 - 将
mousewheel.acceleration.factor
设置为所需的数字(10
到20
是常用值)。
或者,要使用系统值(如 Chromium 中的滚动方式),请将 mousewheel.system_scroll_override.enabled
设置为 false
。
Mozilla 增加鼠标滚轮滚动速度的建议是
- 将
mousewheel.default.delta_multiplier_y
设置为200
到500
之间(默认值:100
)
像素级精确触控板滚动
要启用一对一触控板滚动(如在 Nautilus 等 GTK3 应用程序中看到的那样),请在启动 Firefox 之前设置 MOZ_USE_XINPUT2=1
环境变量。
如果滚动不流畅,请尝试在首选项 > 常规 > 浏览下启用 Firefox 的使用平滑滚动选项。
启用触摸屏手势
在 Wayland 上,默认启用触摸屏手势。
在 X11 上,确保 dom.w3c_touch_events.enabled
设置为 1(启用)或 2(默认,自动检测),并设置 MOZ_USE_XINPUT2=1
环境变量。
在某些设备上,可能需要通过运行以下命令禁用 xinput 的触摸屏手势
$ xsetwacom --set device Gesture off
鼠标点击 URL 栏的行为
在旧版本的 Firefox 中,可以在 about:config
中调整地址栏的行为,但这已在 2020 年 3 月移除。
为了例如禁用首次单击时选择地址栏内容的行为,或者允许双击 URL 以完全选择它,请参阅用户贡献的脚本,例如 https://github.com/SebastianSimon/firefox-omni-tweaks
平滑滚动
为了在 Firefox 中获得平滑的基于物理的滚动效果,可以更改 general.smoothScroll.msdPhysics
配置,以模拟与其他 Web 浏览器中类似的更快速的行为。对于更快的配置,请将以下内容附加到 ~/.mozilla/firefox/your-profile/user.js
(需要重启)
user_pref("general.smoothScroll.lines.durationMaxMS", 125); user_pref("general.smoothScroll.lines.durationMinMS", 125); user_pref("general.smoothScroll.mouseWheel.durationMaxMS", 200); user_pref("general.smoothScroll.mouseWheel.durationMinMS", 100); user_pref("general.smoothScroll.msdPhysics.enabled", true); user_pref("general.smoothScroll.other.durationMaxMS", 125); user_pref("general.smoothScroll.other.durationMinMS", 125); user_pref("general.smoothScroll.pages.durationMaxMS", 125); user_pref("general.smoothScroll.pages.durationMinMS", 125);
此外,还必须更改鼠标滚轮滚动设置,以平滑的方式做出反应
user_pref("mousewheel.min_line_scroll_amount", 30); user_pref("mousewheel.system_scroll_override_on_root_content.enabled", true); user_pref("mousewheel.system_scroll_override_on_root_content.horizontal.factor", 175); user_pref("mousewheel.system_scroll_override_on_root_content.vertical.factor", 175); user_pref("toolkit.scrollbox.horizontalScrollDistance", 6); user_pref("toolkit.scrollbox.verticalScrollDistance", 2);
如果您在性能各异的机器上遇到问题,请尝试修改 mousewheel.min_line_scroll_amount
,直到感觉足够流畅为止。
有关修改质量-弹簧-阻尼器参数的更高级配置,请参阅 AveYo 的自然平滑滚动配置。
about:config
并关闭 apz.gtk.kinetic_scroll.enabled
来关闭它。但是,这将使滚动到长页面的开头和结尾变得更加困难。设置退格键的行为
禁用鼠标中键粘贴剪贴板内容
请参阅 Firefox#鼠标中键行为。
Emacs 快捷键绑定
要在文本字段中激活类似 Emacs/Readline 的快捷键绑定,请参阅 GTK#Emacs 快捷键绑定。
杂项
强制启用硬件视频解码
尽管默认情况下启用了 media.hardware-video-decoding.enabled
,但可能需要通过将 media.hardware-video-decoding.force-enabled
设置为 true
来强制启用硬件视频解码。
移除全屏警告
可以通过在 about:config
中将 full-screen-api.warning.timeout
设置为 0
来禁用全屏模式下显示的视频警告(… 现在是全屏)。
更改 Firefox 搜索栏中搜索引擎的顺序
要更改搜索引擎在其中显示的顺序
- 打开搜索引擎的下拉列表,然后单击管理搜索引擎... 条目。
- 突出显示要移动的引擎,然后使用上移或下移来移动它。或者,您可以使用拖放。
“手气不错”模式
一些搜索引擎具有“手气不错”功能。例如,Google 有“I'm Feeling Lucky”。
要激活它们,请在 about:config
中搜索 keyword.url
并修改其值(如果有)为搜索引擎的 URL。
对于 Google,将其设置为
https://www.google.com/search?btnI=I%27m+Feeling+Lucky&q=
使用 DNSSEC 验证器进行安全 DNS
您可以启用 DNSSEC 支持以获得更安全的浏览体验。
使用 DNS over HTTPS 进行安全 DNS
请参阅 域名解析#应用层 DNS。
添加 magnet 协议关联
在 about:config
中,将 network.protocol-handler.expose.magnet
设置为 false
。如果它不存在,则需要创建它,在空白区域单击鼠标右键并选择新建 > 布尔值,输入 network.protocol-handler.expose.magnet
并将其设置为 false
。
下次您打开 magnet 链接时,将提示您一个启动应用程序对话框。从那里,只需选择您选择的 BitTorrent 客户端。此技术也可以用于其他协议:network.protocol-handler.expose.<protocol>
。
防止意外关闭
有不同的方法来处理这个问题
可以通过在 about:config
中将 browser.quitShortcut.disabled
属性设置为 true
来禁用此行为
另一种方法是在您的窗口管理器配置文件中添加规则。例如,在 Openbox 中添加
<keybind key="C-q"> <action name="Execute"> <execute>false</execute> </action> </keybind>
在 <keyboard> 部分的 ~/.config/openbox/rc.xml
文件中。
可以安装 Disable Ctrl-Q and Cmd-Q 扩展程序来防止意外关闭浏览器。
滚动不流畅或卡顿
Firefox 中的滚动可能会感觉“不流畅”或“卡顿”。MozillaZine 上的一篇文章给出了在 Gentoo 上有效的设置,据报道在 Arch Linux 上也有效
- 将
mousewheel.min_line_scroll_amount
设置为 40 - 将
general.smoothScroll
和general.smoothScroll.pages
设置为 false - 将
image.mem.min_discard_timeout_ms
设置为一个非常大的值,例如 2100000000,但不要超过 2140000000。如果超过此数字,Firefox 将不会接受您的输入并报错:“您输入的文本不是数字。” - 将
image.mem.max_decoded_image_kb
设置为至少 512K
现在滚动应该流畅了。
在 nspawn 容器中运行 Firefox
请参阅 systemd-nspawn#Run Firefox。
禁用 WebRTC 音频后处理
如果您正在使用 PulseAudio PulseAudio#Microphone echo/noise cancellation,您可能不希望 Firefox 进行额外的音频后处理。
要禁用音频后处理,请将以下首选项的值更改为 false
media.getusermedia.aec_enabled
(声学回声消除)media.getusermedia.agc_enabled
(自动增益控制)media.getusermedia.noise_enabled
(噪声抑制)media.getusermedia.hpf_enabled
(高通滤波器)
Fido U2F 身份验证
Firefox 支持 Fido U2F 身份验证协议。安装 libfido2 以获取所需的 udev 规则。
恢复 ALSA 工作
只要 Arch 继续使用 ac_add_options --enable-alsa 构建 Firefox,那么 Firefox 就可以在系统上正常工作,无需 pulse,无需任何特殊配置,也无需 apulse(除非系统上使用 pulse 并且希望 Firefox 避免使用它)。过去,人们必须允许 ioctl 系统调用,默认情况下 Firefox 沙箱阻止了这些调用,并且 ALSA 设置 security.sandbox.content.syscall_whitelist
在 about:config
中需要正确的 ioctl 系统调用号,x86-64 为 16,x86-32 为 54,但现在不再需要了。有关参考,请参阅
强制启用 WebGL
在某些平台上,即使使用者希望使用 WebGL,WebGL 也可能被 禁用。要强制启用 WebGL,请将 webgl.force-enabled
设置为 true
;要同时强制启用 WebGL 抗锯齿,请将 webgl.msaa-force
设置为 true
。
如果您收到类似于以下的错误
libGL error: MESA-LOADER: failed to retrieve device information libGL error: image driver extension not found libGL error: failed to load driver: i915 libGL error: MESA-LOADER: failed to retrieve device information ...
那么您可以尝试 Firefox 错误 1480755 [6] 中解释的解决方案
将 security.sandbox.content.read_path_whitelist
设置为 `/sys/`
启用 “Pocket 推荐”
如果您没有看到“Pocket 推荐”(首选项 > 主页 > Firefox 主页内容 - 在“热门站点”和“精彩集锦”之间),您可以通过在 about:config
中将 browser.newtabpage.activity-stream.feeds.section.topstories
和 browser.newtabpage.activity-stream.feeds.system.topstories
设置为 true
来启用它。尽管该选项仍然不会在首选项中显示,但新打开的标签页/窗口(如果设置为 Firefox 主页
)现在应该会显示 Pocket 推荐。
阻止下载面板自动打开
从 Firefox 98 开始,每当开始下载时,下载面板(包含正在进行/最近的下载)总是会打开。
您可以通过在 about:config
中将 browser.download.alwaysOpenPanel
首选项设置为 false
来禁用此行为。