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

假設有多餘的內存可用,將 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}


參見