Firefox/在 RAM 中存儲配置 - Arch Linux 中文维基

跳至內容

# Firefox/在 RAM 中存儲配置

出自 Arch Linux 中文维基
< Firefox
翻譯狀態：

- 本文（或部分內容）譯自 Firefox/Profile on RAM，最近一次同步於 2025-01-04，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

假設有多餘的內存可用，將 Firefox 的緩存或完整配置文件放入 RAM 中可以帶來顯著的優勢。若選擇部分遷移，不僅其本身會帶來優勢，還比默認配置響應更快。其優勢包括但不限於：

- 減少磁碟讀寫操作；
- 提高響應速度；
- 可在 Firefox 中幾乎即時地執行許多操作（如快速搜索和歷史記錄查詢）。

這可以使用 tmpfs 實現。

由於放入 RAM 中的數據無法在系統關閉後繼續保存，如果需要持久化數據（如遷移配置文件時），需要藉助腳本在系統關閉前將數據同步回磁碟。而僅遷移緩存快速但覆蓋面較小，可以稍微提升用戶體驗，同時在每次重啟時清空 Firefox 緩存。

注意：緩存存儲在與 Firefox 默認配置文件文件夾（`/home/$USER/.mozilla/firefox/`）不同的位置：`/home/$USER/.cache/mozilla/firefox/<profile>`。這與其它瀏覽器（如 Chromium）的處理方式相似。因此，章節 #使用工具將配置文件遷移到 RAM 和 #手動將配置文件遷移到 RAM 不涉及緩存的遷移和同步，而僅限於配置文件的調整。有關更多細節，請參閱 Profile-sync-daemon 的第一條「注意」。Anything-sync-daemon 可以用於實現與選項 2 類似的緩存文件夾操作。

## 僅將緩存遷移到 RAM

參見 Firefox/微調#關閉磁碟緩存。

## 使用工具將配置文件遷移到 RAM

將瀏覽器配置文件重新定位到 tmpfs，可全局提升瀏覽器的響應速度，並減少驅動器的 I/O 操作，其中固態硬碟受益最大。

使用一個主動管理腳本可以實現最大程度的可靠性和易用性。在 AUR 中有多個可用的腳本。

### Profile-sync-daemon

參見 Profile-sync-daemon 頁面以獲取更多信息。

### firefox-sync

firefox-syncAUR 對於僅使用單個配置文件的用戶來說已經足夠，它使用類似於下文 #腳本中的腳本和 systemd 服務。

根據 #開始之前中的建議，確認並備份當前的 Firefox 配置文件。

使用附加配置片段將配置文件作為參數傳遞： `-p profile_id.default`。

警告：該操作可能會刪除配置文件，請備份以準備在啟動服務後立即從備份中恢復。

然後啟動/啟用 `firefox-sync.service` 用戶單元。

## 手動將配置文件遷移到 RAM

### 開始之前

請務必在可能影響 Firefox 配置文件之前將其備份，以便快速恢復。首先，通過訪問 `about:profiles` 頁面，查看正在使用的配置文件目錄。使用 `tar` 進行備份（替換 `xyz.default` 為正在使用的配置文件目錄）：

    $ tar zcvfp ~/firefox_profile_backup.tar.gz ~/.mozilla/firefox/xyz.default

### 腳本

此腳本改編自 verot.net 的 Speed up Firefox with tmpfs。

腳本首先會將 Firefox 的配置文件移動到一個新的靜態位置，在 `/dev/shm` 中創建一個子目錄，在原位置使用軟連結指向它，然後將配置文件的內容填充到該目錄中。和之前一樣，並且直到本文結束，替換所有粗體 `xyz.default` 字符串為 Firefox 配置文件目錄。唯一必須更改的值仍然是 `xyz.default`。

在安裝 rsync 後，創建：

    ~/.local/bin/firefox-sync.sh

    #!/bin/sh

    static=static-$1
    link=$1
    volatile=/dev/shm/firefox-$1-$USER

    IFS=
    set -efu

    cd ~/.mozilla/firefox

    if [ ! -r $volatile ]; then
    	mkdir -m0700 $volatile
    fi

    if [ "$(readlink $link)" != "$volatile" ]; then
    	mv $link $static
    	ln -s $volatile $link
    fi

    if [ -e $link/.unpacked ]; then
    	rsync -av --delete --exclude .unpacked ./$link/ ./$static/
    else
    	rsync -av ./$static/ ./$link/
    	touch $link/.unpacked
    fi

將腳本設為可執行，然後運行以下命令以關閉 Firefox 並測試腳本：

    $ killall firefox firefox-bin
    $ ls ~/.mozilla/firefox/
    $ ~/.local/bin/firefox-sync.sh xyz.default

再次運行 Firefox 並評估結果。腳本第二次運行時，會將 RAM 配置文件複製回磁碟來保留它。

### 自動化

鑑於忘記同步配置文件可導致的災難性後果，自動化此過程會是一個合乎邏輯的選擇。

#### systemd

創建以下腳本：

    ~/.config/systemd/user/firefox-profile@.service

    [Unit]
    Description=Firefox profile memory cache

    [Install]
    WantedBy=default.target

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=%h/.local/bin/firefox-sync.sh %i
    ExecStop=%h/.local/bin/firefox-sync.sh %i

然後，運行 daemon-reload 並啟用/啟動 `firefox-profile@xyz.default.service` 用戶單元。

#### cron 定時任務

使用 `crontab` 操作用戶的 cron 表：

    $ crontab -e

添加一行每隔 30 分鐘運行腳本：

    */30 * * * * ~/.local/bin/firefox-sync.sh xyz.default

或者添加以下內容，每隔 2 小時運行一次：

    0 */2 * * * ~/.local/bin/firefox-sync.sh xyz.default

#### 登錄/註銷時進行同步

若使用 bash，在登錄/註銷文件中運行 #腳本：

    $ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.bash_logout ~/.bash_login

注意：如果同時存在 `~/.bash_profile` 和 `~/.bash_login` 並且兩者都可讀，bash 只會讀取前者，因此可能需要使用 `~/.bash_profile` 替代 `~/.bash_login`。

對於 zsh，使用 `~/.zlogin` 和 `~/.zlogout` 代替：

    $ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.zlog{in,out}

## 參見

- tmpfs

分類：​

- 網頁瀏覽器

Firefox/在 RAM 中存儲配置
新增話題