Windows Internet Explorer 9

IE9は主要ブラウザの中でも特にフリーズ対策が進んだブラウザのひとつとされている。どのような仕組みでフリーズの範囲を限定的なものとし、ほかのタブに影響を与えないようにしているか、フリーズ発生時にユーザにどのような選択肢を提供しているかがIEBlogで報告されている。

IE9はブラウザフレームとタブが別コンポーネントとして分離している。ブラウザフレームとタブは共有のメッセージキューを通じてコミュニケーションを取るようになっており、従来はこのキューが固まることで、ブラウザ全体が固まるような振る舞いをしていたという。たとえば何らかのプラグインが固まると、それを保持しているタブも固まり、そのタブが処理すべきメッセージが処理されないままメッセージキューの処理が進まなくなる。結果としてほかのタブも処理ができなくなり、ブラウザ全体がフリーズしていた。

IE9ではここが改良されているという。IE9のブラウザフレームは定期的にタブをチェックし、レスポンスがないタブを発見すると、そのタブに関連するメッセージを一時的にキューから外して別の場所へ移動させる。この結果キューの処理が進むため、ほかのタブの処理は継続される。IE9のブラウザフレームは固まったタブからレスポンスを受けると、退避させたメッセージをキューに戻して、処理を再開する。なお、プラグインがフリーズした場合、IE9はタブ内のプラグインのみが影響を受け、ほかのタブで利用されている同じプラグインは影響を受けないという特徴がある。

Webページが固まったと判断される基準は8秒間レスポンスがないかどうかだという。プラグインがクラッシュしたり、JavaScriptの処理が8秒間で終わらないと、IE9は「フリーズしているためページをリカバリするか」、「スクリプトを停止するか」といった判断を求めてくる。そのまま処理を継続させることもできる。

IE9がフリーズする原因には「アドオン」もある。IE9の起動時や新規タブ作成時にアドオンの初期化処理が実施されるが、ここで8秒以上という長い時間がかかる場合、IE9はタブが固まったという報告とともに、対象のアドオンを停止するかどうかの設定ダイアログを表示する。そのまま処理を継続することもできる。

フリーズ分離が進んだブラウザとしてはChromeもIE9と同様の機能を提供している。ただし、IE9におけるプラグインフリーズはタブ内部のプラグインのみが影響を受けるのに対して、Chromeではそのプラグインを含むすべてのタブが影響を受ける。