此頁面包含高級 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 是一個使用 Rust 編寫的高性能、基於 GPU 加速的 2D 渲染引擎,是 Firefox 和 Servo 瀏覽器引擎項目的渲染架構,從 Firefox 93 開始默認啟用,並在硬體至少支持 OpenGL 3.0 或 OpenGL ES 3.0(截至 2021-04)且滿足最低驅動程序要求的情況下默認使用硬體渲染。如果系統不滿足這些要求,則回退到使用 WebRender 軟體渲染。
如果在設備驅動程序已更新的情況下仍然遇到渲染問題,可以在 about:config
中將 gfx.webrender.software
設置為 true
強制啟用 WebRender 軟體渲染。
關閉磁碟緩存
加載的每個對象(HTML 頁面、JPEG 圖像、CSS 樣式表、GIF 橫幅)都會保存到 Firefox 緩存中,以便將來無需重新下載即可使用。由於因為對象的過期時間較短、更新頻繁或用戶行為(加載新頁面而不是返回已訪問的頁面),估計其中只有約 30% 的對象會被重複使用。Firefox 緩存分為內存緩存和磁碟緩存,後者會導致頻繁的磁碟寫入:新加載的對象會寫入內存,而舊對象會被移除。
一種替代方法是在 about:config
中進行以下設置:
- 將
browser.cache.disk.enable
設置為false
- 確保
browser.cache.memory.enable
設置為true
,關於此選項的更多信息請參見 browser.cache.memory MozillaZine 文章 - 添加條目
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 或類似的周期性同步腳本定期將緩存複製到磁碟上來避免這種情況。
- 需要為每個用戶單獨配置這些設置。
將磁碟緩存移動到內存中
另一種方法是將「磁碟」緩存移動到內存檔中,這是一種介於以上兩種方案之間的解決方案。這樣緩存將在 Firefox 會話之間(包括 Firefox 崩潰恢復)保留,但在重啟(包括作業系統崩潰)後會被丟棄。
要實現這一點,進入 about:config
並將 browser.cache.disk.parent_directory
設置為 /run/user/UID/firefox
,其中 UID
是用戶 ID,可以通過 id -u
獲取當前用戶 ID。
打開 about:cache
以驗證新的磁碟緩存位置。
延長會話信息記錄間隔時間
Firefox 會定期將當前會話狀態(打開的網址、cookies、歷史記錄和表單數據)存儲到磁碟上。這些信息用於在崩潰時恢復上一次的會話。 默認設置是每 15 秒保存一次會話,這會導致頻繁的磁碟訪問。
例如,要將保存間隔增加到 10 分鐘(600000 毫秒),可以在 about:config
中將 browser.sessionstore.interval
的值更改為 600000
。
若要完全禁用此功能,請將 browser.sessionstore.resume_from_crash
更改為 false
。
對配置文件的 SQLite 資料庫進行碎片整理
Firefox 將書籤、歷史記錄和密碼存儲在 SQLite 資料庫中。隨著時間推移,這些資料庫會產生碎片,空閒空間散布各處。但由於沒有管理進程檢查和優化資料庫,這些因素最終會對性能造成影響。通過整理碎片和清理未使用空間,可以提升啟動速度以及與書籤和歷史記錄相關的一些任務性能。
在 Firefox 未運行的情況下,可以使用 profile-cleaner包 來完成此操作:
SQLite 資料庫 | 整理前大小 | 整理後大小 | 變化百分比 |
---|---|---|---|
urlclassifier3.sqlite | 37 M | 30 M | 19 % |
places.sqlite | 16 M | 2.4 M | 85 % |
Firefox 提供了一個工具,用於整理和優化 places 資料庫(這是導致性能下降和配置文件損壞的主要原因)。要訪問此工具,請打開 about:support
頁面,找到 Places 資料庫
,然後點擊 驗證完整性
按鈕。
通過 tmpfs 將整個配置文件緩存到內存中
如果系統有多餘的內存,可以使用 tmpfs
將整個配置文件目錄緩存到內存中,這可能會提高 Firefox 的響應速度。
禁用 Pocket 服務
如果您不使用 Pocket 服務,可以通過在 about:config
中將 extensions.pocket.enabled
設置為 false 來禁用它。
外觀
字體
參見主條目:字體配置
配置 DPI 值
如果系統的 DPI 值低於 96,修改以下值可以改善 Firefox 中字體的顯示效果。默認情況下,Firefox 使用的 DPI 值為 96,只有當系統的 DPI 值高於 96 時才會使用系統的 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 後,網頁內容將使用 144 的 DPI 值,看起來會更好。
如果在 Firefox 103 之後的版本中字體過大,可將 browser.display.os-zoom-behavior
設置為 0。接著,在 about:config
搜索框中輸入 ui.textScaleFactor
,選擇「數值」選項,點擊「+」按鈕添加該首選項,並將其值編輯為 layout.css.devPixelsPerPx
值的 100 倍。例如,如果 layout.css.devPixelsPerPx
設置為 1.25,則 ui.textScaleFactor
應設置為 125。
參見 HiDPI#Firefox 了解有關 HiDPI 顯示器的信息,以及計算 DPI 的工具。
Microsoft Windows 默認字體設置
以下是在 Microsoft Windows 上安裝 Firefox 時的默認字體設置。許多網站使用 Microsoft 字體。
比例字體:襯線字體 字號:16(像素) 襯線字體:Times New Roman 無襯線字體:Arial 等寬字體:Courier New 字號:13(像素)
通用用戶界面 CSS 設置
可以通過編輯 ~/.mozilla/firefox/配置文件夾/chrome/
(配置文件夾
的格式為 hash.name
,其中 hash
是一個 8 位隨機字符串,name
通常為 default
)路徑下的 userChrome.css
和 userContent.css
文件修改 Firefox 的用戶界面。您可以通過在 URL 欄中輸入 about:support
,在 應用程式概要
部分查找 配置文件夾
欄位來獲取具體的配置文件名稱(參考 Firefox 文檔)。
-
chrome/
文件夾和userChrome.css
或userContent.css
文件可能不存在,因此可能需要手動創建。 - 必須在
about:config
中啟用toolkit.legacyUserProfileCustomizations.stylesheets
。
本節僅涉及修改 Firefox 用戶界面的 userChrome.css
文件,不包含網頁內容的修改。
更改界面字體
該設置能夠覆蓋 GTK 全局字體首選項,並且僅更改界面字體而不改變網頁字體:
~/.mozilla/firefox/配置文件夾/chrome/userChrome.css
* { font-family: "FONT_NAME"; }
隱藏按鈕圖標
啟用僅文本按鈕:
~/.mozilla/firefox/配置文件夾/chrome/userChrome.css
.button-box .button-icon { display: none; }
隱藏標籤頁欄上的各種按鈕
以下設置可以隱藏標籤頁欄水平邊緣上的箭頭、切換「所有標籤頁」下拉列表的按鈕以及用於創建新標籤的頁加號按鈕。
~/.mozilla/firefox/配置文件夾/chrome/userChrome.css
/* 标签页栏 */ toolbarbutton#scrollbutton-up, toolbarbutton#scrollbutton-down { /* 隐藏标签页栏滚动按钮 */ display: none; } .browser-toolbar > * #alltabs-button { /* 隐藏切换“所有标签页”下拉列表的按钮 */ display: none; } .browser-toolbar > * #new-tab-button { /* 隐藏打开新标签页按钮 */ display: none; }
豎直/樹狀標籤頁
使用以下插件之一將標籤欄放置在側邊欄/樹中:
Firefox 插件無法通過其擴展 API 隱藏原生標籤欄⸺要做到這一點,請按照插件的設置/高級說明進行操作。
隱藏標題欄和窗口邊框
要用標籤欄替換標題欄,請在 about:config
中將 browser.tabs.inTitlebar
設置為 1
。
或者轉到「更多工具」中的「定製工具欄⋯」,取消選中左下角的「標題欄」複選框。如果該複選框本未選中,請確保正確設置了 XDG_CURRENT_DESKTOP
環境變量和/或將 MOZ_GTK_TITLEBAR_DECORATION
環境變量設置為 client
。
自動隱藏書籤工具欄
~/.mozilla/firefox/配置文件夾/chrome/userChrome.css
#PersonalToolbar { visibility: collapse !important; } #navigator-toolbox:hover > #PersonalToolbar { visibility: visible !important; }
取消側邊欄寬度限制
~/.mozilla/firefox/配置文件夾/chrome/userChrome.css
/* 取消側邊欄最大與最小寬度限制 */ #sidebar { max-width: none !important; min-width: 0px !important; }
使用深色 GTK 主題時輸入欄位不可讀
在使用深色 GTK 主題時,可能會遇到網頁上的輸入和文本欄位不可讀的問題(例如,文本輸入欄位中的白色文本顯示在白色背景上,或黑色文本顯示在深色背景上)。這種情況的發生是因為網站僅設置了背景色或文本顏色之一,而 Firefox 則從主題中獲取了另一種顏色。為防止 Firefox 使用主題顏色和網頁中的深色主題,請確保在 about:config
中將 browser.display.use_system_colors
和 widget.content.allow-gtk-dark-theme
均設置為 false
。
如果上述修改未能解決問題,可以通過添加一個新的字符串鍵 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
,如果不存在,可以在該位置創建。
以下設置將輸入欄位設置為標準的白底黑字。這兩種顏色可以被網頁覆蓋,從而按照網頁的設計顯示顏色:
: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 等來源獲得,也可以安裝某些插件來管理主題。
導入其他 CSS 文件
~/.mozilla/firefox/配置文件夾/chrome/userContent.css
@import url("./imports/some_file.css");
屏蔽來自特定域名的部分
~/.mozilla/firefox/配置文件夾/chrome/userContent.css
@-moz-document domain(example.com) { div#header { background-image: none !important; } }
在指向 PDF 文件的連結文本後追加「[pdf]」
~/.mozilla/firefox/配置文件夾/chrome/userContent.css
/* 在指向 PDF 文件的链接文本后追加“[pdf]” */ 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
)。
像素級精確的觸控板滾動
要啟用 1:1 的觸控板滾動效果(如在 Nautilus 等 GTK3 應用中所見),在啟動 Firefox 之前設置環境變量 MOZ_USE_XINPUT2=1
。
如果滾動時不夠流暢,可以在「設置 > 常規 > 瀏覽」中啟用 Firefox 的「使用平滑滾動(M)」選項。
啟用觸控螢幕手勢
在 Wayland 上,觸控螢幕手勢默認啟用。
在 X11 上,確保將 dom.w3c_touch_events.enabled
設置為 1(「啟用」)或 2(「默認,自動檢測」),並設置環境變量 MOZ_USE_XINPUT2=1
。
在某些設備上,可能需要通過運行以下命令禁用 xinput 的觸控螢幕手勢:
$ xsetwacom --set 设备 Gesture off
滑鼠點擊地址欄時的行為
在舊版本的 Firefox 中,可以在 about:config
中調整地址欄的行為,但此功能已在 2020 年 3 月被移除。
例如,要禁用首次點擊時自動選中地址欄內容的行為,或允許雙擊地址欄以選中全部 URL,可參考用戶提供的腳本,如:https://github.com/SebastianSimon/firefox-omni-tweaks
平滑滾動
要在 Firefox 中實現基於物理效果的平滑滾動,可以修改 general.smoothScroll.msdPhysics
配置,以模擬其他瀏覽器中的更靈敏滾動行為。為了快速配置,可將以下內容追加到 ~/.mozilla/firefox/配置文件夾/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 的自然平滑滾動配置。
apz.gtk.kinetic_scroll.enabled
的默認值為 true
而完全無效。如果發現這些調整不起作用,請嘗試將此值設置為 false
。設置 Backspace 鍵行為
參見 Firefox#Backspace 鍵無法用作「後退」按鈕。
禁用中鍵單擊時從剪貼板粘貼內容
參見 Firefox#中鍵單擊行為。
Emacs 按鍵綁定
要在文本欄位中啟用類似 Emacs/Readline 的按鍵綁定,請參閱 GTK#Emacs 按鍵綁定。
雜項
強制啟用硬體視頻解碼
儘管 media.hardware-video-decoding.enabled
默認已啟用,但有時可能需要通過將 media.hardware-video-decoding.force-enabled
設置為 true
來強制啟用硬體視頻解碼。
移除全屏提示
可以通過將 full-screen-api.warning.timeout
設置為 0
來禁用全屏模式播放視頻時的提示(「⋯⋯已進入全屏模式」)。
更改 Firefox 搜索欄中的搜尋引擎順序
要更改顯示搜尋引擎的順序:
- 打開搜尋引擎下拉列表,點擊「管理搜尋引擎...」項。
- 高亮顯示您要移動的引擎,使用「上移」「下移」或直接拖放來移動。
「手氣不錯」模式
一些搜尋引擎(例如 Google)有「手氣不錯」功能。
要啟用它們,請在 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。
添加磁力連結協議關聯
在 about:config
中將 network.protocol-handler.expose.magnet
設置為 false
。如果該項不存在,則首先創建其為布爾值。
下次打開磁力連結時,您將看到一個「啟動應用程式」對話框。只需選擇需要的 BitTorrent 客戶端。這種方法也可以用於其他協議:network.protocol-handler.expose.協議
。
防止意外關閉
有不同的方式來處理這個問題:
可以通過在 about:config
中將 browser.quitShortcut.disabled
屬性設置為 true
來禁用此行為。
另一種方法是在您的窗口管理器配置文件中添加規則。例如 Openbox 中,在 ~/.config/openbox/rc.xml
文件的 <keyboard> 部分添加:
<keybind key="C-q"> <action name="Execute"> <execute>false</execute> </action> </keybind>
可以安裝 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,但不要超過 2147483647(231 - 1)。超過該數值時,Firefox 會拒絕輸入 - 將
image.mem.max_decoded_image_kb
設置為至少 512(K)
現在滾動應該變得更穩定,但不再平滑。
在 nspawn 容器中運行 Firefox
請參閱 systemd-nspawn#運行 Firefox。
禁用 WebRTC 音頻後處理
如果使用 PulseAudio PulseAudio#麥克風回聲/噪音消除,可能不希望 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 就可以在系統中沒有 PulseAudio 的情況下正常工作而無需任何特殊配置,也無需 apulse(除非系統中使用 PulseAudio 且希望 Firefox 避免使用它)。曾經,需要允許 ioctl 系統調用(被 Firefox 沙箱默認阻止),並且 ALSA 設置 security.sandbox.content.syscall_whitelist
中必須包含正確的 ioctl 系統調用號碼,對於 x86-64 是 16,對於 x86-32 是 54,但現在不再需要。參考:
強制啟用 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 bug 1480755 中解釋的解決方案 [5]:
將 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
來禁用此行為。