Firefox/Profile on RAM

来自 ArchWiki

假设有足够的内存,将 Firefox 的缓存或完整配置文件放置在 RAM 中可以带来显著的优势。即使只选择部分方法本身就是一种改进,但后者可以使 Firefox 比其默认配置更具响应性。好处包括但不限于:

  • 减少驱动器读/写;
  • 提升响应速度;
  • Firefox 中的许多操作,例如快速搜索和历史查询,几乎是瞬间完成的。

为此,我们可以使用 tmpfs

因为放置在其中的数据在关机后无法保存,如果需要持久性(配置文件重定位的情况很可能如此),则需要一个脚本在系统关机前同步回驱动器。另一方面,仅重定位缓存是一个快速且更简单的解决方案,可以在每次重启时清空 Firefox 缓存的同时略微提升用户体验。

注意: 缓存与 Firefox 默认配置文件文件夹(/home/$USER/.mozilla/firefox/分开存储:默认情况下位于 /home/$USER/.cache/mozilla/firefox/<profile>。这与 Chromium 和其他浏览器类似。因此,#使用工具将配置文件放置在内存中#手动将配置文件放置在内存中 部分不处理缓存重定位和同步,而仅处理配置文件调整。有关更多详细信息,请参见 Profile-sync-daemon 的第一个注释。Anything-sync-daemon 可用于实现与缓存文件夹选项 2 相同的功能。

仅将缓存重定位到内存

参见 Firefox/Tweaks#关闭磁盘缓存

使用工具将配置文件放置在内存中

将浏览器配置文件重定位到 tmpfs 以全局提高浏览器的响应速度。另一个好处是减少驱动器 I/O 操作,其中 SSD 受益最大

使用主动管理脚本以获得最大的可靠性和易用性。AUR 中提供了几个。

Profile-sync-daemon

参见 Profile-sync-daemon 页面以获取更多信息。

firefox-sync

firefox-syncAUR 对于拥有单个配置文件的用户来说已经足够了;使用类似于 #脚本 的脚本和 systemd 服务。

按照 #开始之前 的建议,识别并备份您当前的 Firefox 配置文件。

使用 drop-in 代码片段,通过 -p profile_id.default 参数传递配置文件。

警告: 这可能会删除配置文件,请在启动服务后立即准备好从备份恢复。

然后 启动/启用 firefox-sync.service 用户单元

手动将配置文件放置在内存中

开始之前

在可能损害 Firefox 配置文件之前,请务必进行备份以便快速恢复。首先,访问 about:profiles 并查看正在使用的配置文件,找出活动的配置文件名称。根据需要替换 xyz.default,并使用 tar 进行备份

$ 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 将只读取前者。

对于 zsh,请改用 ~/.zlogin~/.zlogout

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

参见