跳至內容
出自 Arch Linux 中文维基

此頁面包含高級 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 是一個使用 Rust 編寫的高性能、基於 GPU 加速的 2D 渲染引擎,是 Firefox 和 Servo 瀏覽器引擎項目的渲染架構,從 Firefox 93 開始默認啟用,並在硬體至少支持 OpenGL 3.0 或 OpenGL ES 3.0(截至 2021-04)滿足最低驅動程序要求的情況下默認使用硬體渲染。如果系統不滿足這些要求,則回退到使用 WebRender 軟體渲染。

如果在設備驅動程序已更新的情況下仍然遇到渲染問題,可以在 about:config 中將 gfx.webrender.software 設置為 true 強制啟用 WebRender 軟體渲染。

警告:由於穩定性、渲染輸出和性能的關鍵問題,WebRender 硬體渲染在許多 GPU 和驅動程序上禁用。不建議在這些硬體上強制啟用 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 為單位。

此方法有一些缺點:

  • 瀏覽器崩潰或重新啟動後,當前瀏覽的網頁內容將丟失。可以使用 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 來完成此操作:

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.cssuserContent.css 文件修改 Firefox 的用戶界面。您可以通過在 URL 欄中輸入 about:support,在 應用程式概要 部分查找 配置文件夾 欄位來獲取具體的配置文件名稱(參考 Firefox 文檔)。

注意:
  • chrome/ 文件夾和 userChrome.cssuserContent.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_colorswidget.content.allow-gtk-dark-theme 均設置為 false

如果上述修改未能解決問題,可以通過添加一個新的字符串鍵 widget.content.gtk-theme-override 並將其設置為淺色主題(如 Breeze:lightAdwaita:light),以淺色 GTK 主題啟動 Firefox。

使用 CSS 覆蓋輸入欄位顏色
注意:相關問題從版本 68 開始已修復。[2]

擴展程序 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):

  1. 在地址欄中打開 about:config
  2. 創建名為 widget.content.gtk-theme-override 的字符串首選項(滑鼠右鍵 > 新建 > 字符串)。
  3. 將值設置為用於渲染的淺色主題(例如 Adwaita:light)。
  4. 重新啟動 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 設置為所需的數值(常見值為 1020)。

或者,如果想使用系統值(類似於 Chromium 的滾動方式),將 mousewheel.system_scroll_override.enabled 設置為 false

Mozilla 推薦通過以下方式提高滑鼠滾輪的滾動速度:

  • mousewheel.default.delta_multiplier_y 設置為 200500 之間的值(默認值: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 的自然平滑滾動配置

注意:Wayland 上,這些設置可能會因 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英語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 擴展,以防止瀏覽器被意外關閉。

注意:由於一個 bug,該擴展在 Linux 上不再有效。

滾動不穩

Firefox 中的滾動可能會讓人感覺「顛簸」或「不穩定」。一篇 MozillaZine 上的帖子提供了適用於 Gentoo 的設置,據說也適用於 Arch Linux:

  1. 設置 mousewheel.min_line_scroll_amount 為 40
  2. 設置 general.smoothScrollgeneral.smoothScroll.pagesfalse
  3. 設置 image.mem.min_discard_timeout_ms 為一個非常大的值,例如 2100000000,但不要超過 2147483647(231 - 1)。超過該數值時,Firefox 會拒絕輸入
  4. 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,但現在不再需要。參考:

[3] [4]

強制啟用 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.topstoriesbrowser.newtabpage.activity-stream.feeds.system.topstories 設置為 true 來啟用它。儘管此選項仍不會顯示在首選項中,但重新打開的標籤頁/窗口(如果設置為 Firefox 首頁)現在應該會顯示 Pocket 推薦內容。

防止下載面板自動打開

從 Firefox 98 開始,下載面板(顯示正在進行/最近的下載)會在每次下載開始時自動打開。

您可以通過在 about:config 中將 browser.download.alwaysOpenPanel 設置為 false 來禁用此行為。

參見