注册 登录
远景论坛 - 前沿科技与智慧生态的极客社区 返回首页

技術控:妳好 ❤ https://i.pcbeta.com/?2265352 [收藏] [复制] [分享] [RSS]

日志

(转自CSDN) IE8、IE9浏览器“会话”问题

热度 4已有 1244 次阅读2012-6-18 14:48 | 浏览器, LCIE


原文地址http://blog.csdn.net/sbfivwsll/article/details/7301633


        在IE8以上的的浏览器中,默认情况下,直接使用IE的快捷方式打个多个ie窗口,这些所有的窗口都会向服务器传递同一个cookie值,从而服务器会认为这些窗口的会话都是同一个会话,会引发一些意想不到的后果。 

        手动打开的两个浏览器进程,访问同一个页面,发送/接收到的cookie是同一个值。这是浏览器本身所设计的,无法通过程序来更改。但是在客户端可以通过以几种方式设置后,让不同的浏览器使用不同的会话:

 

1、  打开浏览器后,选择文件菜单下的新建会话选项来打开一个新的浏览器窗口。

2、  对iexplore.exe添加一个快捷方式,在快捷方式后边添加上启动参数-nomerge,以后使用该快捷方式启动浏览器:

3、  修改注册表,在注册表项HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下新加一个dword

        值TabProcGrowth=0,让它 Loosely Couple

 

 

附:Windows 7 研究——IE8 松散耦合进程框架探索(转自:http://www.vista123.com/html/8972.html

         在2008年8月份IE8 Beta刚刚面世不久的时候,我曾经用极短的篇幅介绍了一下IE8的新的Tab控制模型(详情见:《IE8 新特性分析:IE8的稳定性源自何处》 一文)。今天,我将继续和大家分享一些最近一段时间获得的新的知识。

         IE8 松散耦合进程框架,英文原文是Loosely Coupled IE (LCIE),是一种基于作业(Job)的进程管理方式。这种方式已经逐渐被各大浏览器所采用,例如Google Chrome。

下图是IE8的LCIE框架结构:

 

 

        作业是Windows 2000引入的一种进程管理方式,可以用一个宿主进程管理多个子进程。管理进程可以给子进程设置很多属性,特别是一些和性能相关的属性,具体可以参考  SetInformationJobObject Function (Windows) 的API说明文档。

         当我们安装完IE8以后,打开一个Tab,使用 Process Explorer 会发现,有2个iexplore.exe实例,这个就是最典型的LCIE表现:Tab工作在进程空间里面,有一个独立的框架进程用于管理Tab进程。

如下图所示,我打开了4个Tab,出现了4个Tab进程(进程ID分别为 9000、9672、6052、3056),框架进程的进程PID是7416:

 

 

        因为LCIE的模型决定了IE的框架和Tab是独立的进程体,因此相互之间是需要通信的,根据Process Explorer的显示,框架进程和Tab进程的通信是使用的ALPC(高级本地过程调用,在Windows内核里面经常可以见到,效率很高)机制(在 Windows Vista上面),关于LPC的技术解释,请Google搜索。

        我们继续研究LCIE的 标签创建方式。当我们新开启一个Tab以后,系统会创建一个iexplorer.exe进程用于和这个Tab绑定,那么我开启10个Tab以后,是10个 进程吗?实际的测试结果是:不一定。具体创建多少个Tab进程实际是由IE框架确定的,根据目前已知的结论,IE框架会根据可用的物理内存大小确认最多创 建几个Tab进程。

注:默认情况下,我的2台笔记本(物理内存均配置了4GB,可用内存一般在1.5GB左右)在Windows Vista里面,创建的Tab进程最多是5个。那么,是否有可能控制Tab进程的数量呢?答案是可以的。IE8 Frame在启动的时候,会检查注册表

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下面的TabProcGrowth键值(键值类型DWORD),利用这个键值,就可以操作IE8的Tab数量了。

 

                                                IE框架和Tab工作在一个进程里面,Tab采用线程的方式创建。

 TabProcGrowth=0

                                                当TabProcGrowth=0的时候,IE的保护模式(Protect Mode)会关闭,这种模式

                                                类似于在Windows Vista下面把IE7 以 run as administrator方式启动。

                                                IE框架和Tab工作在不同的进程里面。


                                                但是Tab按照不同的mandatory integrity level (MIC)创建,举例就是需要关闭保护模式

                                                的Tab工作在一个浏览进程里面,另外的工作在另外的一个浏览进程里面

TabProcGrowth=1

                                                 例 如:我把taobao.com和kztechs.com加入了Trusted Site列表里面,当使用这个模式

                                                 的时候,访问taobao.com和kztechs.com的时候,Tab将工作在一个进程里面,而访问

                                                 其他的站点的时 候,Tab将工作在另外的一个进程里面。

                                                 这是因为加入Trusted Site列表以后,IE的保护模式会关闭,MIC等级的不同造成了的不

                                                 同的Tab进程的出现。

TabProcGrowth>1                   在这个模式下,TabProcGrowth的值将决定最多创建的Tab进程数目。如果

                                                 TabProcGrowth为100,那么最多创建100个Tab进程。


TabProcGrowth 不存在            使用默认的机制,根据可用的物理内存数量决定Tab进程的数量。

(默认情况)

 

关于IE8 LCIE的FAQ:

1、为什么不是每个Tab一个进程,而有一个上限呢?

因 为创建一个进程的开销是远远大于创建一个线程的,创建一个进程,需要重新加载所有相关的模块,而且进程间的切换也会带来很大的性能损耗。IE8的LCIE 机制在达到Tab进程最多数目以后,后续的新开网页将将采用负载平衡的机制让不同的Tab进程进行处理,以达到资源的最大利用。


2、LCIE模型里面,会话是怎么处理的?我怎么感觉到不同的Tab都使用的是同一个会话呢?

的确,因此Tab进程的出现,会话的处理是比较关注的一个点。在IE8里面,会话是和IE框架绑定的, 在这个IE框架下的所有Tab,共享同一个会话,具体来说就是:假设第一个Tab进程访问了msdn.microsoft.com网站并属于了Live ID登录以后,后续新开的Tab进程如果也访问了msdn.microsoft.com网站,那么是共享刚才的Live ID的,除非过期;而且,即使你从开始菜单里面点击IE图标,新创建的窗口也是使用先前的会话的。


3、在LCIE模型里面,如果让不同的窗口使用不同的会话呢?

要在IE8里面,让不同的窗口使用不同的会话,可以点击文件菜单-->新建会话菜单项,使用这个方式,新创建的窗口将采用一个新的会话,以便和之前的会话区分开来。

 


4、为什么有时候IE8 Tab进程在访问的页面关闭以后,Tab进程还是存在呢?

这 是为了性能考虑的,防止用户马上又新开一个窗口,前面说过创建一个Tab进程是需要很多资源的。在默认情况下,IE8的Tab进程在网页窗口关闭以后,将 驻留60秒时间,然后再退出。当然,我们也可以通过设置注册表 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下的TabShutdownDelay DWORD键值来控制Tab进程的退出时间。注意:TabShutdownDelay的单位是毫秒(1秒等于1000毫秒)。

 

文末

转自CSDN -- sbfivwsll博客文章《IE8 ie9 浏览器“会话”问题》有删改!

 

 


路过

雷人
2

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

发表评论 评论 (3 个评论)

回复 sxq610 2012-6-20 14:39
请问能不能再详细点  谢谢
回复 大号跳蚤 2012-6-21 06:37
sxq610: 请问能不能再详细点  谢谢
我不是原文作者,最下面有链接。
回复 try_go 2012-9-29 17:02
厉害啊。。。。。。。。。

facelist

您需要登录后才可以评论 登录 | 注册

小黑屋手机版联系我们

Copyright © 2005-2025 PCBeta. All rights reserved.

Powered by Discuz!  CDN加速及安全服务由「快御」提供

请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。

远景在线 ( 苏ICP备17027154号 )|远景论坛 |Win11论坛 |Win10论坛 |Win8论坛 |Win7论坛 |WP论坛 |Office论坛

GMT+8, 2025-4-13 09:04

返回顶部