こんにちは、Internet Explorer サポート担当の原です。
今回から少しずつ、Internet Explorer (IE) における過去の大きな変更点を中心に、互換性に影響する情報をおさらいしていきます。
第 1 弾は、IE8 から実装している LCIE 機能の紹介です。本ブログでも以前に紹介したことがありますが、見直してまいりましょう。
LCIE 機能によるプロセス分離
IE8 以降では、各タブ ウィンドウをホストする UI フレーム ウィンドウとドキュメントを表示するタブ ウィンドウとが、別々のプロセスとして動作します。
この IE8 での新しいプロセス モデルは、Loosely-Coupled IE (LCIE) と呼んでいます。詳細に関しましては、弊社 IE 開発チームのブログでも紹介しています。
IE8 と Loosely-Coupled IE (LCIE)
http://msdn.microsoft.com/ja-jp/ie/cc787974.aspx
Opening a New Tab may launch a New Process with Internet Explorer 8.0 (英語)
LCIE 機能が有効の場合 (既定では有効)、各タブ、および window.open メソッドなどで開かれたウィンドウは別々のプロセスで動作し、タブごとに保護モードの設定が適用されます。
フレームとタブ部分のプロセスが分離することにより、特定の Web ページで問題が発生した場合でも、問題が発生したタブだけを切り離し、影響を最小限に抑えることができます。
しかしながら、BHO や ActiveX などのアドオンによっては、LCIE 機能により複数の iexplore.exe プロセスが動作することで不都合が生じるようです (共有メモリーの使用や排他処理など)。
対策として、TabProcGrowth のレジストリやグループ ポリシーを使用することで、LCIE 機能を無効にできます。
ただし、無効にすることでクラッシュ回復やハング回復機能の恩恵を受けられなくなります。
- レジストリ
キー : HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
名前 : TabProcGrowth
値 : 0 (REG_DWORD)
- グループ ポリシー
[ユーザーの構成] または [コンピューターの構成]
+ [管理用テンプレート]
+ [Windows コンポーネント]
+ [Internet Explorer]
- [タブ プロセスの増加率を設定] を "有効" に設定し、増加率に 0 を指定します。
なお、IE10 以降においては、フレーム プロセスが 64 bit のみに変更されたことから、LCIE 機能を無効にしているシナリオで注意が必要です。
LCIE 機能を無効にするとフレーム プロセスのみで動作することになるので、64 bit の iexplore.exe 単体で動作します。
そのため、32 bit で動作する BHO や ActiveX などのアドオンは、LCIE 機能を無効にした IE10 以降では動作しません。
LCIE 機能の無効は、基本的にはデメリットしかありませんので、可能な限り LCIE 機能を無効にせずにご利用いただくことが望ましいです。
32-bit browser applications may not work as expected in Internet Explorer 10 (英語)
http://support.microsoft.com/kb/2716529/en-us
LCIE 機能によるセッションの共有
LCIE のプロセス モデルがもたらす機能のひとつとして、フレーム マージによるセッション (資格情報、Cookie) の共有があります。
従来の IE では、異なるプロセスとして iexplore.exe を起動すると、それぞれ異なるセッションで動作しました。
IE8 以降では、既に起動している IE が存在すると、新しく IE のプロセスを起動しても異なるセッションにはならず、既存の IE 配下にマージされ、同一のセッションで動作します。
セッションの共有を行わないためには、-noframemerging のオプションを指定して iexplore.exe を起動する、FrameMerging のレジストリでフレーム マージを無効にする方法があります。
- レジストリ
キー : HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
名前 : FrameMerging
値 : 0 (REG_DWORD)
Session management within Internet Explorer 8.0 (英語)
Internet Explorer Command-Line Options (英語)
http://msdn.microsoft.com/en-us/library/ee330728.aspx
それでは、次回もよろしくお願いいたします!