Loosely-Coupled Internet Explorer (LCIE)

Autor: Ondřej Výšek

Ako bolo napísané v mnohých článkoch, Internet Explorer 8 obsahuje celý rad nových technológií. Jednou z nich je i Loosely-Coupled Internet Explorer (LCIE). Táto funkcia by sa jednoducho dala popísať ako oddelenie procesov jednotlivých záložiek v prehľadávači, čo sa javí pokiaľ sa pozriete napríklad do správcu úloh.

Vďaka zavedeniu tejto technológie je zvýšená stabilita celého prehľadávača a pokiaľ napríklad dôjde k pádu z dôvodov neplatnej operácie na stránke, je uzatvorená iba tá záložka, na ktorej bola detegovaná chyba, nie prehľadávač ako taký. Táto zmena tiež umožňuje zakazovať či povoľovať ActiveX prvky pre jednotlivé stránky zvlášť, čo pri predchádzajúcich verziách nebolo možné (tu bolo ActiveX iba povolené/zakázané).

Z dôvodu tejto zmeny nemusia rozšírenia pre Internet Explorer, ktoré boli vyvinuté pre predchádzajúce verzie, fungovať správne. Týka sa to predovšetkým nasledujúcich vývojových techník:

  • Vkladanie nového okna medzi jednotlivé záložky a rám prehľadávanej stránky. Zvyčajne sú to rozšírenia, ktoré pracujú s hierarchiou okien.
  • Rozšírenie Internet Explorera, ktoré otvára okno ako „medium-integrity level“. Zvyčajne sa to týka rozšírení, ktoré otvárajú nové okno a vyžadujú prístup k počítaču ako takému. V tomto modeli bude okno otvorené ako potomok existujúcich na úrovni „low-integrity“.
  • Záložky Internet Explorera a rám prehľadávača bežia v iných procesoch. Pokiaľ rozšírenia využívajú nepodporované preposielanie informácií medzi záložkami a oknom s prehľadávanou stránkou, nebudú fungovať. Rozšírenia využívajúce COM objekty budú fungovať i naďalej.

Štruktúra práce LCIE je ukázaná na nasledujúcom obrázku.

Pretože ide o internú zmenu v Internet Exploreri, nemusí byť táto zmena viditeľná na prvý pohľad, predsa však je táto zmena zreteľná napríklad, pokiaľ otvárate stránku z miestneho počítača, pod Windows Vista, je stránka ihneď otvorená v novej záložke. V predchádzajúcich verziách by bola zobrazená informácia o tom, že je nutné otvoriť nové okno prehľadávača – je nutný beh pod inou úrovňou integrity level. V Internet Exploreri 8 je vytvorená nová záložka, samostatný proces, ktorý má inú úroveň integrity level.

Vzhľadom na to, že jednotlivé bežiace procesy nie sú v správcovi úloh označené zodpovedajúcou stránkou, je možné detegovať zodpovedajúci proces napríklad pomocou proces monitora (procmon). Pri použití ikony v proces monitore zvolíme zodpovedajúcu záložku alebo okno prehľadávača.

Následne sú zobrazené čísla procesov (zobrazíme modifikáciu filtra proces monitora), ktoré sa týkajú zodpovedajúceho okna prehľadávača či procesu s pruhom záložiek. Môžeme teda pracovať s konkrétnymi informáciami v rámci správcu úloh či ďalších nástrojov.

Pre modifikáciu správania Internet Explorera s ohľadom na vytváranie nových procesov je možné modifikovať systémový register HKCU\Software\Microsoft\Internet Explorer\Main – TabProcGrowth, ktorý môže byť buď hodnota typu string alebo dword. Pokiaľ je táto hodnota typu string, je možné nastaviť nasledujúce – použije sa tzv. Algoritmus Context-based :

  • small – najviac 5 procesov na správu záložiek pri spustení; vyžaduje 15 záložiek na spustenie 3. procesu na správu záložiek
  • medium – najviac 9 procesov na správu záložiek pri spustení; vyžaduje 17 záložiek na spustenie 5. procesu na správu záložiek
  • large – najviac 16 procesov na správu záložiek pri spustení; vyžaduje 21 záložiek na spustenie 9. procesu na správu záložiek

Vo východiskovom nastavení sa tieto hodnoty volia automaticky, a to s ohľadom na množstvo dostupnej RAM v počítači. Pokiaľ je hodnota typu dword, použije sa tzv. Algoritmus Max-Number:

  • TabProcGrowth = 0 – všetky záložky a okná prehľadávača sú ako jediný proces; pri otváraní súboru s iným integrity-level je otvorené nové okno (ekvivalent IE7)
  • TabProcGrowth = 1 – všetky záložky zodpovedajúceho procesu na správu záložiek sú spustené v samostatnom procese na správu záložiek
  • TabProcGrowth >1 – bude použitých viac procesov na spustenie jednotlivých záložiek. Pri otvorení novej záložky je vytvorený proces, a to až dovtedy, kým nie je dosiahnutá hodnota uvedená v TabProcGrowth, následne je otváranie rozkladané medzi existujúce procesy

Poznámka: v rámci terminálovej prevádzky je TabProcGrowth vždy 1.