- 浏览: 64069 次
- 性别:
- 来自: 四川
最新评论
在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数量了。
TabProcGrowth=0 | IE框架和Tab工作在一个进程里面,Tab采用线程的方式创建。 当TabProcGrowth=0的时候,IE的保护模式(Protect Mode)会关闭,这种模式类似于在Windows Vista下面把 IE7 以 run as administrator方式启动。 |
TabProcGrowth=1 | IE框架和Tab工作在不同的进程里面。 但是Tab按照不同的mandatory integrity level (MIC)创建,举例就是需要关闭保护模式的Tab工作在一个浏览进程里面,另外的工作在另外的一个浏览进程里面。 例 如:我把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毫秒)。
文末:
IE8 相对于IE7来说,无论是进程框架和渲染引擎都得到了极大的改善和优化,而且在各种标准支持方面都比IE7好了不少,虽然IE8不是最快的浏览器,也不是 应试分数最好的浏览器,但是无论是兼容性还是安全性方面,都是值得大家去安装的。如果你是因为受不了IE7的慢而使用FireFox或Chrome浏览器 的,现在可以再体验一下IE8,相信会比IE7有着明显的改善的,呵呵。
发表评论
-
struts2 中获取 web资源的方式
2016-01-08 17:02 539在struts2中获取 web资源的方式大致可分为获取扩展 ... -
sql server、db2、oracle 存储过程动态sql语句示例
2015-01-31 19:00 1845Oracle CREATE OR REPLACE PRO ... -
ie9 中出现不明的异常(参数是必选项 (Argument not optional)、尚未实现)等
2015-01-27 23:57 1315<script type="text/jav ... -
SAXParseException: The content of element type "configuration" must match
2014-09-15 23:57 1975在mybatis的配置文件中新增加<databaseI ... -
java.lang.ClassNotFoundException: Cannot find class: DB_VENDOR
2014-09-15 23:45 2018在mybatis 中使用databaseIdProvide ... -
spring mvc3 + fastjson 转换 REST 参数以及输出
2014-03-27 00:16 4264spring 3可以支持Rest风格参数,其内置了jack ... -
eclipse中编辑log4j 的xml配置文件时,自动提示
2014-03-27 00:05 899方法1. 配置log4j.dtd文件: Windows - ... -
java json 转换之 Jackson 框架
2013-08-01 21:50 1179转自:http://www.cnblogs.com/hooj ... -
eclipse/myeclise 自定义注释中的变量名称
2013-07-01 23:18 981eclipse/myeclipse中自带了 ... -
Eclipse Class Decompiler——Java反编译插件
2012-11-08 22:41 1246Eclipse Class Decompiler,整 ... -
struts+spring+hibernate整合问题解决方法 陆续更新中....
2009-01-01 10:33 889在整合ssh过程中出现的问题和解决方法: 一、 严重: Ser ... -
DWR通过Annotation与spring整合
2009-01-21 22:05 672DWR 2.0 增加了一个很有趣的新特性,Annotat ... -
div嵌套页面 div加载页面 (其中获取目标页面的内容是用dwr框架连接java程序做的)
2009-03-15 16:58 664前段时间因为有需要,要在div中加载一个页面。但是以前没做过, ... -
tapestry autocomplete 更改样式及定位
2009-07-09 19:02 727版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文 ... -
Java中的main()方法详解
2009-07-12 16:23 657源文作者:leizhimin 源文链接:http:/ ... -
tapestry5 集成 spring 的事务管理
2009-07-22 15:43 604说明:使用的是tapestry5.1.0.5 和spring ... -
tapestry5 布局 参数的处理
2009-07-23 17:24 449<?xml version="1.0" ... -
tapestry不支持 等html特殊符号的解决方法
2009-07-23 17:34 566在使用tapestry时,偶然发现使用 &a ... -
WebService大讲堂之Axis2(1):用POJO实现0配置的WebService
2009-07-28 15:01 438转自:http://space.itpub.net ... -
WebService大讲堂之Axis2(2):复合类型数据的传递
2009-07-28 15:25 529转自:http://space.itpub.net/12921 ...
相关推荐
【标题】"仿IE8多标签浏览器"是一个基于C#编程语言开发的软件项目,旨在模仿Internet Explorer 8(IE8)的界面和部分功能,尤其是其多标签页浏览特性。这种类型的浏览器允许用户在同一应用程序窗口中打开多个网页,...
7. **崩溃恢复**:如果浏览器意外关闭,IE8可以恢复未完成的会话,防止用户丢失未保存的信息。 8. **兼容性视图**:考虑到部分网站可能未优化以适应新版本的浏览器,IE8引入了兼容性视图,允许用户以旧版本的渲染...
IE8 本身提供的 "新建会话" 功能,可以新建一个 Session,但是对于长效的 Cookie 是无效的,对于不使用长效 Cookie 程序即可解决这一问题,有很多应用中还是存在长效 Cookie 的,还是不能很好地解决这一问题。IE8 中...
IE8(Internet Explorer 8)是微软开发的一款网页浏览器,虽然它在发布初期提高了易用性,但也遇到了一些用户在使用过程中遇到的问题。以下是一些常见故障及其解决方法: **一、网页显示异常** 当在Windows XP中...
标题中的"IE8串session"问题是指在使用Internet Explorer 8(简称IE8)时,浏览器的不同窗口或标签页之间可能会共享同一个Session,导致用户在不同网页上的登录状态、个性化设置等信息相互影响,这在多用户环境或者...
IE8引入了一项名为“新建会话”的功能,使得在同一台电脑上,用户可以使用多个浏览器窗口同时登录同一网站的不同账户。 首先,让我们了解为什么在IE6和IE7中不能同时登录多个账户。这是因为浏览器使用Cookie来存储...
2. **专用搜索框**:IE8中内置的专用搜索框在IE9中被取消,导致用户需要通过其他方式或浏览器的地址栏进行搜索。 3. **标签列表菜单按钮**:IE9不再提供标签列表菜单,用户无法像在IE8中那样方便地查看和管理多个...
总的来说,httpWatch是一款不可或缺的性能分析工具,尤其对于需要兼容IE9, IE8, IE6的老版本浏览器的项目,它可以帮助开发者在不理想的浏览器环境中找出性能瓶颈,从而提升整体用户体验。通过对每个请求的细致分析,...
禁用选项卡浏览后,每次打开新的链接或网址,都会在桌面上创建一个新的IE8浏览器窗口,这样虽然可以清楚地分隔各个浏览会话,但可能会占用更多的桌面空间,并且切换起来不如选项卡浏览模式方便。 总的来说,选项卡...
在本文中,我们将深入探讨如何在Microsoft Foundation Class (MFC) 框架下利用Internet Explorer (IE) 内核来构建一个简单的浏览器应用。这个项目是在Visual Studio 2008环境下完成的,它展示了如何封装IE浏览器的...
6. **崩溃恢复**:如果浏览器崩溃,IE8可以恢复未完成的会话,避免用户丢失打开的多个标签页。 7. **隐私和安全控制**:IE8提供了更精细的隐私设置,用户可以自定义第三方Cookie的处理方式。 在压缩包的文件名称...
IETest是一款强大的网页兼容性测试工具,它集成了从Internet Explorer 6到Internet Explorer 9等多个版本的浏览器内核,为开发者和设计师提供了一个便捷的环境来测试网站在不同IE版本下的表现。这款工具对于那些需要...
这意味着该工具只能与IE7.0版本配合使用,对于IE7.0以上的版本,包括IE8、IE9、IE10等,该工具可能无法正常工作。这是因为不同的IE版本可能存在不同的内核和架构,可能不支持该多开工具所依赖的特定功能或机制。 ...
标题"使用已打开的浏览器"提示我们将讨论如何利用Selenium与已启动的浏览器实例进行交互,而非每次都启动一个新的浏览器会话。 在某些情况下,我们可能希望利用已打开的浏览器窗口进行测试,例如,当需要在特定的...
#修改ie默认打开参数,解决ie8会话冲突问题,例如QQ农场和QQ空间在上两个QQ时,后开的农场或空间会覆盖之前用户的农场或空间内容。 #注意:在登陆相关网站时,一定要注意,输入用户名、密码后,千万要把“记住用户名...
在IE11中,当用户在网页中点击某个应用链接(例如Windows 8 Mail),应用会以一个小型浏览器窗口的形式与当前网页并排显示,而不是像之前那样单独打开。这种模式提高了效率,使用户能够同时处理多个任务。 5. **...
会出现页内查找框 启用自动恢复最后的会话 启用后,再此打开IE时将会自动打开上一次的会话 IE7设置 启用Tab双击关闭 启用后,双击Tab即可关闭 开启首页保护 :使用首页保护后,IE首页设置将不再有效 启用...
IE8,作为微软推出的一款浏览器产品,虽然被誉为速度最快,但在实际使用过程中,用户常遇到各种故障。这些问题主要源于浏览器的兼容性问题、安全设置不当以及新特性的理解不足。以下,我们将针对常见的IE8故障提供...
正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。