コンテンツにスキップ

「Firefox/プロファイルを RAM に置く」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
en:Firefox Ramdiskへの転送ページ
 
AshMyzk (トーク | 投稿記録)
同期
 
(5人の利用者による、間の11版が非表示)
1行目: 1行目:
[[Category:ウェブブラウザ]]
#redirect[[en:Firefox Ramdisk‏‎]]
[[de:Firefox-Profile in Ramdisk auslagern]]
[[en:Firefox/Profile on RAM]]
[[ru:Firefox (Русский)/Profile on RAM]]
メモリが余っている場合、[[Firefox]] のキャッシュやプロファイルを RAM に置くことで大きなメリットが得られます。一部を選択するだけでも効果はありますが、全てを RAM に配置することで標準設定に比べて Firefox のレスポンスをさらに良くすることができます。以下のようなメリットがあります:

* ドライブへの読み書きが減る。
* レスポンス性が高まる。
* クイック検索や履歴閲覧など、Firefox での多く操作がほとんど瞬間的になる。

[[Tmpfs]] をこの用途に使用することができます。

RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。

{{Note|キャッシュは Firefox のデフォルトプロファイルフォルダ ({{ic|/home/$USER/.mozilla/firefox/}}) とは'''別に'''保存されています: デフォルトではキャッシュは {{ic|/home/$USER/.cache/mozilla/firefox/<profile>}} にあります。これは Chromium などの他のブラウザも同じです。そのため、[[#ツールを使ってプロファイルを RAM に配置]] や [[#手動でプロファイルを RAM に配置]] セクションでは、キャッシュの再配置や同期については'''扱わず'''、プロファイルの設定だけを対象としています。詳しくは [[Profile-sync-daemon]] の最初のノートを見て下さい。[[Anything-sync-daemon]] を使うことでキャッシュフォルダでも同じように再配置ができます。}}

== キャッシュだけを RAM に再配置 ==

[[Firefox/設定#ディスクキャッシュの無効化]] を見てください。

== ツールを使ってプロファイルを RAM に配置 ==

ブラウザプロファイルを [[tmpfs]] に再配置すると一般的にブラウザの反応がとても良くなります。他にもドライブへの I/O 操作が減らせるというメリットがあり、[[パフォーマンスの向上#ディスクの書き込みを表示する|SSD の場合は特に意味があります]]。

できるかぎり信頼性があって使いやすい、活発に開発されているスクリプトを使って下さい。AUR から複数のスクリプトをインストールできます:

* {{Pkg|profile-sync-daemon}} - 詳しくは [[Profile-sync-daemon]] の記事を参照してください。
* {{AUR|firefox-sync}} - 1つのプロファイルを持つユーザーに最適です。下記のものと似たスクリプトと systemd サービスが使用されています。

== 手動でプロファイルを RAM に配置 ==

=== はじめに ===

Firefox のプロファイルを破壊しまう可能性があるので、後で復元できるようにバックアップを作成しておいてください。まず、{{ic|about:profiles}} を開いて、どのプロファイルが使用されているかを確認して、アクティブなプロファイルの名前を調べてください。{{ic|tar}} を使ってバックアップを作成してください (以下の '''{{ic|xyz.default}}''' の部分は適切な名前に置き換えてください):

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

=== スクリプト ===

<small>''[https://www.verot.net/firefox_tmpfs.htm verot.net の Speed up Firefox with tmpfs] から引用''</small>

このスクリプトは、最初に Firefox のプロファイルを固定の新しい場所に移動して、{{ic|/dev/shm}} にサブディレクトリを作成して、そのディレクトリへのソフトリンクを作成し、それからプロファイルの中身をそこに配置します。先と同じように、この記事では、太文字 '''{{ic|xyz.default}}''' の部分は Firefox のプロファイルフォルダの名前に置き換えてください。絶対に置き換える必要があるのは '''{{ic|xyz.default}}''' だけです。

[[rsync]] がインストールされていることを確認して、以下を[[作成]]してください:

{{hc|~/.local/bin/firefox-sync.sh|2=
#!/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 ====

以下のスクリプトを[[作成]]してください:

{{hc|~/.config/systemd/user/firefox-profile@.service|2=
[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]] して {{ic|firefox-profile@'''xyz.default'''.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。

==== cron ジョブ ====

{{ic|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

{{Note|{{ic|~/.bash_login}} ではなく {{ic|~/.bash_profile}} を使うほうが良いでしょう。両方のファイルが存在して読み込むことができる場合、bash は後者だけを読み込みます。}}

[[zsh]] の場合は、代わりに {{ic|~/.zlogin}} と {{ic|~/.zlogout}} を使用します:

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

== 参照 ==

* [[tmpfs]]

{{TranslationStatus|Firefox/Profile on RAM|2023-09-17|784460}}

2023年9月17日 (日) 07:38時点における最新版

メモリが余っている場合、Firefox のキャッシュやプロファイルを RAM に置くことで大きなメリットが得られます。一部を選択するだけでも効果はありますが、全てを RAM に配置することで標準設定に比べて Firefox のレスポンスをさらに良くすることができます。以下のようなメリットがあります:

  • ドライブへの読み書きが減る。
  • レスポンス性が高まる。
  • クイック検索や履歴閲覧など、Firefox での多く操作がほとんど瞬間的になる。

Tmpfs をこの用途に使用することができます。

RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。

ノート キャッシュは Firefox のデフォルトプロファイルフォルダ (/home/$USER/.mozilla/firefox/) とは別に保存されています: デフォルトではキャッシュは /home/$USER/.cache/mozilla/firefox/<profile> にあります。これは Chromium などの他のブラウザも同じです。そのため、#ツールを使ってプロファイルを RAM に配置#手動でプロファイルを RAM に配置 セクションでは、キャッシュの再配置や同期については扱わず、プロファイルの設定だけを対象としています。詳しくは Profile-sync-daemon の最初のノートを見て下さい。Anything-sync-daemon を使うことでキャッシュフォルダでも同じように再配置ができます。

キャッシュだけを 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
ノート ~/.bash_login ではなく ~/.bash_profile を使うほうが良いでしょう。両方のファイルが存在して読み込むことができる場合、bash は後者だけを読み込みます。

zsh の場合は、代わりに ~/.zlogin~/.zlogout を使用します:

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

参照

翻訳ステータス: このページは en:Firefox/Profile on RAM の翻訳バージョンです。最後の翻訳日は 2023-09-17 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。