2015年3月26日木曜日

Firefox 36.0のキャッシュをRAMディスクに入れて高速化

恥ずかしいことにFirefoxに関して全くの知識不足で、RAMディスクの設定関連で色々と間違いやおかしなところがあった。設定されている数値が正しいもののはずのだが、テキトウな実測値を規定値にしたのがバカの始まりだったわけで。

今回はそれらの間違い部分を完全に直して、快適なFirefox環境をつくることにする。

定番のRAMディスクにキャッシュを入れることから始めることにした。

RAMディスクの利点はとにかく早いことであり、SSDへの書き込みを減らして負担を軽くするという目的もある。それと、Webブラウジングがかなり快適になる。キャッシュの書き込みと読み出しが非常に早いので、結果的に表示も操作性も良くなる。

Firefox 36.0のキャッシュファイルをRAMディスクに入れるために、以下の事が必要となる
・OSの起動完了後、RAMディスクを作成しHFS+フォーマットでマウントさせる
・Firefox側の設定を変更し、Storage disk locationの場所をRAMディスクに変更する


【OS X起動後にスクリプトを実行させてRAMディスクを作成・マウント】
RAM Diskを作成してフォーマットしてマウントさせる

540 MBのRAMディスクがあれば他の目的にも使えるだろうと考え、以下のように、
540 x 1024 x 1024 ÷ 512 —> ram://1105920
(360 MiBにする場合は ram://737280)

そこで、シェルスクリプトは以下のようになった


#!/bin/sh

NUMSECTORS="$(hdiutil attach -nomount ram://1105920)"
diskutil eraseDisk HFS+ TEMP_Disk $NUMSECTORS



実際に出来上がるRAMディスクのサイズはSI接頭辞だと566.2 MBになる。2進接頭辞で540 MiB となる(で、いいのかな?)。


【OSの起動後に自動でRAMディスクをマウントさせる】
このシェルスクリプトをAutomator.appでミニアプリ化して、起動時に読み込ませるようにする。

下記リンク先は自分の倉庫にしている所で、今回作成したミニアプリを置いておく。 RAMDiskMount540MiB.zip とRAMDiskMount360MiB.zip というのがそれ。それぞれ540 MiBと360 MiBのRAMディスク用のもの。

https://sites.google.com/site/bzgbg1606warehouse/home/openwarehouse/


RAMディスクマウント用のミニアプリをアプリケーションフォルダに置き、システム環境設定の User & Groups にある Login Items に登録して完了。

これで起動時にこのアプリが動作してRAMディスクをマウントしてくれる。

Macを再起動させて、RAMディスクがきちんと作成されてマウントされているかをチェック。


【Firefoxのキャッシュの置き場所を変更する】
マウントしたRAMディスクをFirefoxのキャッシュ置き場にするために設定を書き加える
アドレスバーに about:config と打ち込んで詳細設定を表示。

その画面上で右クリック、

出てきたメニューから New > String と進んで、
browser.cache.disk.parent_directory
と書き込んで OK をクリック。


続いて、RAMディスクのディレクトリの /Volumes/TEMP_Disk と書いて OK をクリック。

間違いがないか確認してからFirefoxを一旦終了し、再度開く。


【Firefoxのキャッシュサイズを任意で変更】
キャッシュのサイズはFirefoxの環境設定から行える。未設定だと200MB。ここではSI接頭辞で記入。


アドレスバーに about:cache と入力し、diskの項のMaximum storage sizeで確認できる。

環境設定からキャッシュサイズを300MBにしたのなら、ここでは 307200 KiB と表示される。

実際に設定した容量まで書き込めるのか、それと溢れた場合はどうなのかを試してみたのが以下の添付画像。

設定した容量までちゃんと書き込めることを確認した。溢れた分はハードドライブ(HDDとかSSD)に書き込まれるのだろう(行き先未確認)。

オフラインキャッシュの置き場もRAMディスクに変更されるので、これも適当な値にする必要があるが、自分はほとんど使わないので 204800 KiB に設定。 about:config から browser.cache.offline.capacity の数値を 204800 にするだけ。本当に使わないなら browser.cache.offline.enablefalse にすればいいのでは(未確認)。



【キャッシュに指定したサイズ以上のメモリを使った場合どうなるか】
クラッシュするわけでも動かなくなるわけでもない.。

【RAMディスクがマウントされていない状態ではどうなるか】
メモリだけを使うモードになり、ディスクキャッシュとアプリケーションキャッシュを使わない。

【閲覧履歴を残している状態でシステムを再起動した場合はどうなるか】
履歴はメインのストレージ側に残るが、表示するコンテンツのキャッシュは残らないので、ページの再読み込みとなる。

【閲覧中にRAMディスクをアンマウントしたらどうなるか】
問題ないと言えるかどうかは表示しているコンテンツ次第。静的なページならRAMディスクがいきなり喪失してもページをリロード(再読み込み)すれば問題ない。
動画を見ている最中とかブラウザゲームとかだと困ったことになるのは想像できる。

【RAMディスクがない状態で使ってその後RAMディスクをマウントしたら】
RAMディスクがあることをFirefoxが認識していても、それを使ってくれないことがある。
Firefoxを一旦終了して再び開いてもRAMディスクを使ってくれない状態ならば、システムの再ログインか再起動。


0 件のコメント:

コメントを投稿