Jak bylo napsáno v mnoha článcích, Internet Explorer 8 obsahuje celou řadu nových technologií. Jednou z nich je i Loosely-Coupled Internet Explorer (LCIE). Tato funkce by se jednoduše dala popsat jako oddělení procesů jednotlivých záložek v prohlížeči, což se jeví pokud se podíváte například do správce úloh.

clip_image002

Díky zavedení této technologie je zvýšena stabilita celého prohlížeče a pokud například dojde k pádu z důvodů neplatné operace na stránce, je uzavřena pouze ta záložka, na které byla detekována chyba, nikoliv prohlížeč jako takový. Tato změna také umožňuje zakazovat či povolovat ActiveX prvky pro jednotlivé stránky zvlášť, což u předchozích verzí nebylo možné (zde bylo pouze ActiveX povoleno/zakázáno).

clip_image004

Z důvodu této změny nemusí rozšíření pro Internet Explorer, která byla vyvinuta pro předchozí verze fungovat správně. Týká se to především následujících vývojových technik:

  • Vkládání nového okna mezi jednotlivé záložky a rám prohlížené stránky. Obvykle jsou to rozšíření, která pracují s hierarchií oken.
  • Rozšíření Internet Exploreru, které otevírá okno jako „medium-integrity level“. Obvykle se to týká rozšíření, která otevírají nové okno a vyžadují přístup k počítači jako takovému. V tomto modelu bude okno otevřeno jako potomek stávajících na úrovni „low-integrity“.
  • Záložky Internet Exploreru a rám prohlížeče běží v jiných procesech. Pokud rozšíření využívá nepodporovaného přeposílání informací mezi záložkami a oknem s prohlíženou stránkou, nebudou fungovat. Rozšíření využívající COM objekty budou fungovat i nadále.

Struktura práce LCIE je ukázána na následujícím obrázku.

clip_image006

Jelikož se jedná o interní změnu v Internet Exploreru, nemusí být tato změna viditelná na první pohled, nicméně tato změna je zřetelná například, pokud otevíráte stránku z místního počítače, pod Windows Vista, je stránka ihned otevřena v nové záložce. V předchozích verzích by byla zobrazena informace o tom, že je nutné otevřít nové okno prohlížeče – je nutný běh pod jinou úrovní integrity level. V Internet Exploreru 8 je vytvořena nová záložka, samostatný proces, který má jinou úroveň integrity level.

Vzhledem k tomu, že jednotlivé běžící procesy nejsou ve správci úloh označeny odpovídající stránkou, je možné detekovat odpovídající proces například pomocí proces monitoru (procmon). Při použití ikony v proces monitoru zvolíme odpovídající záložku nebo okno prohlížeče.

clip_image008

clip_image010

clip_image012

Následně jsou zobrazeny čísla procesů (zobrazíme modifikaci filtru proces monitoru), které se týkají odpovídajícího okna prohlížeče či procesu s pruhem záložek. Můžeme tedy pracovat s konkrétními informace v rámci správce úloh či dalších nástrojů.

Pro modifikaci chování Internet Exploreru s ohledem na vytváření nových procesů je možné modifikovat systémové registry HKCU\Software\Microsoft\Internet Explorer\Main – TabProcGrowth, který může být buď hodnota typu string nebo dword. Pokud je tato hodnota typu string, je možné nastavit následující – použije se tzv. Algoritmus Context-based :

  • small – nejvíce 5 procesů pro správu záložek při spuštění; vyžaduje 15 záložek pro spuštění 3. procesu pro správu záložek
  • medium – nejvíce 9 procesů pro správu záložek při spuštění; vyžaduje 17 záložek pro spuštění 5. procesu pro správu záložek
  • large – nejvíce 16 procesů pro správu záložek při spuštění; vyžaduje 21 záložek pro spuštění 9. procesu pro správu záložek

Ve výchozím nastavení se tyto hodnoty volí automaticky a to s ohledem na množství dostupné RAM v počítači. Pokud je hodnota typu dword, použije se tzv. Algoritmus Max-Number:

  • TabProcGrowth = 0 – všechny záložky a okna prohlížeče jsou jako jediný proces; při otevírání souboru s jiným integrity-level je otevřeno nové okno (ekvivalent IE7)
  • TabProcGrowth = 1 – všechny záložky odpovídajícího procesu pro správu záložek jsou spuštěny v samostatném procesu pro správu záložek
  • TabProcGrowth >1 – bude použito více procesů pro spouštění jednotlivých záložek. Při otevření nové záložky je vytvořený proces a to až do té doby, dokud není dosaženo hodnoty uvedené v TabProcGrowth, následně je otevírání rozkládáno mezi existující procesy

Poznámka: v rámci terminálového provozu je TabProcGrowth vždy 1.


- Ondřej Výšek