Firefox/プロファイルを RAM に置く
メモリが余っている場合、Firefox のキャッシュやプロファイルを RAM に置くことで大きなメリットが得られます。一部を選択するだけでも効果はありますが、全てを RAM に配置することで標準設定に比べて Firefox のレスポンスをさらに良くすることができます。以下のようなメリットがあります:
- ドライブへの読み書きが減る。
- レスポンス性が高まる。
- クイック検索や履歴閲覧など、Firefox での多く操作がほとんど瞬間的になる。
Tmpfs をこの用途に使用することができます。
RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。
目次
キャッシュだけを RAM に再配置
Firefox/設定#ディスクキャッシュの無効化 を見てください。
ツールを使ってプロファイルを RAM に配置
ブラウザプロファイルを tmpfs に再配置すると一般的にブラウザの反応がとても良くなります。他にもドライブへの I/O 操作が減らせるというメリットがあり、SSD の場合は特に意味があります。
できるかぎり信頼性があって使いやすい、活発に開発されているスクリプトを使って下さい。AUR から複数のスクリプトをインストールできます:
- profile-sync-daemon - 詳しくは Profile-sync-daemon の記事を参照してください。
- firefox-syncAUR - 1つのプロファイルを持つユーザーに最適です。下記のものと似たスクリプトと systemd サービスが使用されています。
手動でプロファイルを 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
zsh の場合は、代わりに ~/.zlogin
と ~/.zlogout
を使用します:
$ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.zlog{in,out}