Firefox/Profile on RAM
假设有足够的内存,将 Firefox 的缓存或完整配置文件放置在 RAM 中可以带来显著的优势。即使仅选择部分方案本身也是一种改进,但后者可以使 Firefox 比其默认配置更具响应性。好处包括但不限于
- 减少驱动器读/写;
- 提升响应速度;
- Firefox 中的许多操作,例如快速搜索和历史记录查询,几乎是瞬间完成的。
为此,我们可以使用 tmpfs。
由于放置在其中的数据在关机后无法保留,因此如果需要持久性(配置文件重定位的情况很可能如此),则必须使用脚本在系统关机前同步回驱动器。另一方面,仅重定位缓存是一种快速、包容性较低的解决方案,它可以在每次重启时清空 Firefox 缓存的同时略微加快用户体验。
/home/$USER/.mozilla/firefox/
) 分开存储:默认情况下位于 /home/$USER/.cache/mozilla/firefox/<profile>
。这与 Chromium 和其他浏览器类似。因此,#使用工具将配置文件放置在 RAM 中 和 #手动将配置文件放置在 RAM 中 部分不涉及缓存重定位和同步,而仅涉及配置文件调整。有关更多详细信息,请参阅 Profile-sync-daemon 的第一个注释。Anything-sync-daemon 可用于为缓存文件夹实现与选项 2 相同的功能。仅将缓存重定位到 RAM
使用工具将配置文件放置在 RAM 中
将浏览器配置文件重定位到 tmpfs,以全局提高浏览器的响应速度。另一个好处是减少驱动器 I/O 操作,SSD 受益最多。
使用主动管理脚本以获得最大的可靠性和易用性。AUR 中提供了几种。
Profile-sync-daemon
有关更多信息,请参阅 Profile-sync-daemon 页面。
firefox-sync
firefox-syncAUR 对于具有单个配置文件的用户来说已经足够;使用类似于 #脚本 的脚本和 systemd 服务。
按照 #开始之前 的建议,识别并备份您当前的 Firefox 配置文件。
使用 drop-in snippet 通过 -p profile_id.default
将配置文件作为参数传递。
然后 启动/启用 firefox-sync.service
用户单元。
手动将配置文件放置在 RAM 中
开始之前
在可能损坏 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
。
~/.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}