Firefox Hacks 翻訳日記

アクセスカウンタ

zoom RSS urlclassifier3.sqlite を深く知りたい人のために

<<   作成日時 : 2009/03/08 13:48   >>

トラックバック 1 / コメント 7

前のエントリ places.sqlite の再作成 で sqlite 系のファイルをいじった時に、当然 urlclassifier3.sqlite もあれこれしてみた。
結論として、期待したほどの高速化が得られなかったのでエントリには書かなかったのだが(いいかげん長文になってたし)、某所の高速化エントリ で tips の一つにあげられていたので蘊蓄たれてみる。
常連読者の皆様には既知のことかもしれないがご容赦を。

1. urlclassifier3.sqlite とは何か?

悪意のあるサイト、つまり偽装サイトやら攻撃サイトやらにアクセスしようとした時に、警告を出すための URL データベースである。
Firefox 2 では urlclassifier2.sqlite が使用されていた。
Firefox 3 では urlclassifier3.sqlite が使用されている。
このデータベースは、Firefox が定期的に提供元の Google にアクセスして更新している。

2. urlclassifier3.sqlite はどこにあるのか?

私がハマったところなのだが、人によってはプロファイルフォルダの中に urlclassifier3.sqlite があるだろう。
Fx2 のプロファイルを使い回ししていたりすると urlclassifier2.sqlite も一緒にあるかもしれない。
だが、ファイルのタイムスタンプを見てみれば、最終更新が古い日付になっているだろう。
プロファイルフォルダにあるファイルは、現在は使用されていないのだ。
だから、もしプロファイルフォルダにこれらのファイルタイムスタンプが例えば去年になっているファイルがあれば、ディスクの無駄遣いなので速攻で削除して構わない。
ただし、似たような名前で urlclassifierkey3.txt というファイルもあり、これは使われているので削除しないように。

現在では、urlclassifier3.sqlite はプロファイルフォルダではなくキャッシュフォルダにある。
Windows XP の場合、
C:\Documents and Settings\(username)\Local Settings\Application Data\Mozilla\Firefox\Profiles
に、各プロファイルごとのフォルダがあってその中にある。
ちなみに、プロファイルフォルダの方は、
C:\Documents and Settings\(username)\Application Data\Mozilla\Firefox\Profiles
配下であり、\Application Data 以下は同じなので注意。
また、Mac では ~/ライブラリ/Caches フォルダの中にあるので、キャッシュファイルと間違えている人もいるようだが、urlclassifier3.sqlite はキャッシュファイルではない。

urlclassifier3.sqlite がキャッシュフォルダに移動した時期は Firefox 3.0.1 あたりだと思うのだが、調べきれなかった。
移動した理由は、roaming profile の関係らしい。
プロファイルをローミングして使う場合、キャッシュと同じようにプロファイルフォルダ以外にあって、ローミングの対象から外した方がいい、という事だと思われる。
Bug 383031 – how to shrink the urlclassifier2.sqlite / urlclassifier3.sqlite file ?

<2009年3月9日午後11時25分 追記>
上記の「移動した理由」は、遠からずと言えども当たらず、だったようだ。
コメント欄で、あ さんに教えていただいた Bug 387196 – support the new google safebrowsing protocol のパッチによれば、データベースの形式が変わって、他のマシンにはそのまま移動できないファイルになったから、別の場所に保存する、という事らしい。
<追記終わり>

3. urlclassifier3.sqlite を削除するとどうなるか

半年以上いじらずに使用していた私のプロファイルでは、urlclassifier3.sqlite が 52.9MB になっていた。
Firefox を終了した上でこれを削除(またはリネーム)し、Firefox を再起動。
おお、なんと 32KB になっているではないか。
Firefox の起動も高速化している(ような気がする)。
めでたしめでたし。

甘い。甘すぎる。

Firefox を再起動してそのままアイドリングしてみよう。
urlclassifier3.sqlite はどんどん大きくなっていく。
32KB というのは分割ダウンロードの始まりにすぎないのだ。

私の環境だと、次の 3分でファイルサイズは 6.2MB になり、その後 5分ごとに 3〜4MB の割合で増大していった。
30分後には 18.9MB になり、1時間後の 19.4MB が最終サイズだった。
1ヶ月後の現在でも 19.6MB なので、こんなものだろう。

まとめると、urlclassifier3.sqlite を削除すれば、ファイルサイズはある程度小さくなる。(52.9MB → 19.6MB)
だから、起動時間の短縮にはそれなりの効果があるだろう。(あとディスクの節約にも)
だが、一旦起動した後のブラウジングに関しては、高速化の効果はない。
ファイルサイズが 52.9MB であっても、空のデータはメモリには読み込まれない、という点も指摘しておく。

4. urlclassifier3.sqlite を使用しないとどうなるか

20MB 近いファイルなんぞいちいち読み込みたくない、という向きもあろう。
ツール → オプション → セキュリティ で、偽装サイトと攻撃サイトの警告のチェックを外した上で urlclassifier3.sqlite を削除すれば、その後は再作成されない。
しかし、これは安全性とのトレードオフだ。
私はできるだけ危険なサイトには行かないようにしているのだが、それでも 1回だけ偽装サイトの警告を見た事がある。

雑木林とコンピュータのメモ帳 の計測にもあるように、警告を外したとしてもブラウジングでの高速化は得られない。
高速化を追求して urlclassifier3.sqlite を使用しないのは、車体が軽くなればスピードが出るからと言って、エアバッグやシートベルトを外すようなものだ。
たいして効果はない上に事故った時の被害が大きすぎるので、個人的にはお勧めできない。

<2009年3月8日午後10時40分 追記>
あ さんのコメントを受けて 3箇所に追記および修正。
<追記終わり>

テーマ

関連テーマ 一覧


月別リンク

トラックバック(1件)

タイトル (本文) ブログ名/日時
[Application][Web]正気の沙汰とは思えない程に重くなってきたFirefoxに対してや...
ここ最近、正気の沙汰とは思えない程にFirefoxが重くなってきたので色々と試行錯誤してみた結果、魂を揺さぶられるほどに効果的な方法を見つけることに成功したので、ここで報告します。 まず私のFirefoxが一体どれ程に凄惨な状態になってしまっていたのかということですが ...続きを見る
A.C.Milan好きの皮相浅薄な独り言
2010/09/24 18:19

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(7件)

内 容 ニックネーム/日時
> だから、もしプロファイルフォルダにこれらのファイルがあれば、ディスクの無駄遣いなので速攻で削除して構わない。

プロファイルフォルダをデフォルトの場所に置いた場合には、キャッシュフォルダはそれとは別のデフォルトの場所に作られます。
一方、プロファイルフォルダをデフォルトではない場所に置いた場合には、その同じ場所がキャッシュフォルダとしても使われます。
つまり、プロファイルフォルダをデフォルトでない場所に作っている人のことまで考慮すると、無条件に「プロファイルフォルダにこれらのファイルがあれば」「削除して構わない」とは言えません。

> Windows の場合、
> C:\Documents and Settings\

XP/2003 までの場合は、ですね。Vista 以降では違う場所にあります。

> Mac では /ライブラリ/Caches

~/ライブラリ/Caches です。~ は、ホームディレクトリのことです。
/ から書き始めると、ルートディレクトリのことになるので別の場所になってしまいます。

2009/03/08 20:15
> urlclassifier3.sqlite がキャッシュフォルダに移動した時期は Firefox 3.0.1 あたりだと思うのだが、調べきれなかった。

urlclassifier3.sqlite は、最初からキャッシュフォルダに置かれていたと思います。
https://bugzilla.mozilla.org/show_bug.cgi?id=387196
で urlclassifier2.sqlite から urlclassifier3.sqlite への変更と、プロファイルフォルダからキャッシュフォルダへの変更の両方が行われており、nightly で言うと 2007-07-26 から、Alpha 版で言うと 3.0 Alpha 7 からのようです。

2009/03/08 20:16
あ さん、いつもお世話になっております。
最初のコメントでの三点、修正と追記しました。

> https://bugzilla.mozilla.org/show_bug.cgi?id=387196
読んでみましたけど、safebrowsing を実装する、というバグとしか思えないんですが?
私の読み方が悪いんでしょうか?
池田
2009/03/08 22:55
> 読んでみましたけど、safebrowsing を実装する、というバグとしか思えないんですが?

"new" google safebrowsing "protocol" というところが重要で、google からの情報が変更になる→保存するデータの形式も変更になっています。

また、バグ中のコメントだけだけでなく、パッチの中のコメントまで読む必要があります。
https://bug387196.bugzilla.mozilla.org/attachment.cgi?id=273681
を見ると

> // Change filename each time we change the db schema.
> -#define DATABASE_FILENAME "urlclassifier2.sqlite"
> +#define DATABASE_FILENAME "urlclassifier3.sqlite"
→ ファイル名を変更しています。

2009/03/09 00:37
> - nsresult rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR,
> - getter_AddRefs(dbFile));
→ ここはコメントがないので読み取るのは難しいかもしれませんが、プロファイルフォルダに置くのをやめています。

2009/03/09 00:38
> + // Because we dump raw integers into the database, this database isn't
> + // portable between machine types, so store it in the local profile dir.
> + nsresult rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR,
> + getter_AddRefs(mDBFile));
→ ここで "local profile dir" と呼ばれているのは、池田さんの文中でキャッシュフォルダと呼んでいるもののことです。
(正しい呼び名が何なのか、そもそも呼び名が決まっているのか、はよく知りません)

# コメントの文字数制限にひっかかってしまうので分割しました。

2009/03/09 00:39
詳しい解説、ありがとうございます。
まだまだ修行が足りませんね(^^;
プロファイルフォルダから local profile dir に移動した理由についても追記しました。
池田
2009/03/09 23:32

コメントする help

ニックネーム
本 文
urlclassifier3.sqlite を深く知りたい人のために Firefox Hacks 翻訳日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる