新セッションリストア機能

2010年9月17日(金) 22時18分 by level
B ?

これは Paul O’Shannessy のブログ記事の抄訳です。

Bug 588482 により新しいセッションリストア機能が実装されました。この機能は Firefox 4 Beta 7に搭載される予定です。

Restore Previous Session
  • 以前のセッションをリストアすると、現在のセッションにマージされます。よってリストアによって見ていたページを失うことはありません。
  • 既存の動作は変わりません。Firefox 起動時に「前回起動時のウィンドウとタブを表示する」設定していれば従来通り動作します。
  • 「アイコンタブ」の状態も復元されます(起動時に強制的に復元される?)。
  • 既存のAPIに変更はありません、新しいAPIが追加になります。
  • デフォルトでは、依然として終了時にセッションを保存するかのダイアログが表示されます。

新しいセッションリストアには以下のようなメリットがあります。

  1. 起動が速くなります。
  2. Firefox 終了時、次回にそなえて現在のタブを保存しておく必要があるかを毎回考える必要がなくなります。

プライバシー

セッションデータはプレインテキストの JSON ファイル形式でプロファイルフォルダに保存されます。

我々はセッションの意味を他のブラウザとは少し異なる意味でとらえています。セッション cookie(とその他のすこしばかりの情報)もセッション情報の一部として扱っているのです。これは、その情報をディスクに保存していることを意味します。明示的にオプトインした通常のセッションリストアであればこれで問題有りません。プライバシーレベルを設定する隠し変数(browser.sessionstore.privacy_level)を用意しました。デフォルト値は1です。以下の3つのプライバシーレベルが定義されています:

  • 0 = HTTPとHTTPSサイトの両方でプライバシー情報を保存します
  • 1 = HTTPサイトでのみプライバシー情報を保存します
  • 2 = プライバシー情報を保存しません

繰り延べセッション(deferred sessions?)のために、異なるデフォルトを持てるよう別の変数(browser.sessionstore.privacy_level_deferred)も用意しました。人々はシャットダウン時にリストアに対して明示的な判断を行なわないので、この情報をむやみに復元したくはありません(この情報があれば例えば GMail にログインすることが可能になります)。この変数には先の変数と同じ値を設定できますが、デフォルト値は2であるのでセッション cookie は一切復元されません。


繰り延べセッション(deferred sessions)というのが何を表しているのかわかりませんでした。文脈からすると、シャットダウンによる強制終了時に保存されたセッションをあとで復元するときかと思いましたが、違うようです。

正直に言って、この機能はあまり役に立ちそうにありません。タブを大量に開いている人であれば、確かに起動は速くなるかもしれませんが、結局タブを復元するのであれば同じことで、かえって手間がかかります。(早い段階でユーザに制御が戻るという効果は認めますが)

起動後にセッションを復元しないままちょっとした調べ物をして、そのまま Firefox を終了させると、、、なにが起こるか? 次回起動時にはもう、以前のセッションは復元できません。つまり、前々回以前のセッションは復元できないということです。Opera のように、セッションに名前をつけて、いつでも呼び出せるよう管理できるのであれば別ですが。

最終更新: 2010年9月20日(月) 11時43分

コメント (4)

1 9/18 00:12 Piro
(c1) [2010/09/18 00:12:09] by Piro

コードを見てみた感じでは、「pinnedではない普通のタブ」について、「アドオンをインストールした後の自動的な再起動時が行われる場合」および「起動時に表示するページとして、前回のセッションを復元するよう設定されている場合」ではない場合に、sessionstore.privacy_level_deferred の方が使われるようです。

これまでは「クラッシュからの復帰用」「自動的な再起動の時用」「前回のセッションを起動時に表示する用」にのみセッションを保存していて、それ以外の場合はセッション情報をFirefox終了時に自動的に破棄していました。
上記の用途の場合、次に起動した時に必ずセッションの情報が利用されるので、なるべく多くの情報を残しておいた方が便利です。

しかし今回の変更によって、普通にFirefoxを終了した時も次回にひょっとしたら手動でセッションが復元されるかもしれないので、常にセッション情報を保存しないといけなくなりました。
とはいうものの、ユーザが明示的に「前回のセッションを復元する」という操作をするまでは復元されるかどうか分からない(使われずに放置されるかもしれない)セッション情報については、プライバシー情報を長く持たせておくとそれだけリスクが増すと考えられます。
そのため、そういうケースについては利便性より安全性を取って、デフォルト値が2になっているということなのだと思われます。

2 9/18 07:35 level
(c2) [2010/09/18 07:35:45] by level

詳細な情報ありがとうございます。
実験してみた結果とはあっていないような気もしますが、またあとで調べてみます。

3 9/20 21:39 Piro
(c3) [2010/09/20 21:39:03] by Piro

よく見てみたら、ソース中にこんなコメントがありました。

http://mxr.mozilla.org/mozilla-central/source/browse ... SessionStore.js

// If we're in the process of quitting and we're not autoresuming the session
// then we should treat it as a deferred session. We have a different privacy
// pref for that case.

Firefox終了時にセッションを保存しようとしている場面で、自動的に復元されるセッション以外をdeferred sessionとして扱う、ということで、作り手の意図としてはやはり上記コメントのような感じみたいです。

4 10/14 09:00 Piro
(c4) [2010/10/14 09:00:40] by Piro

Burning Edgeを見てて気がつきましたが、どちらの場合も初期値を0にする変更が入ったようです。

Bug 424872 – Support form restore for securely transmitted site (HTTPS)
https://bugzilla.mozilla.org/show_bug.cgi?id=424872

こうなるともう、設定項目を新設した意味が無い気がしてきます……

トラックバック

トラックバックは検索対象外です。

この記事にリンクしているページ < >

  1. 閾値以下のデータしかありません。