警告: 在某些版本的 Windows 10 上,通过 Microsoft Edge 更新永久禁用已停用的不支持的 Internet Explorer 11 桌面应用程序。 有关详细信息,请参阅 Internet Explorer 11 桌面应用停用常见问题解答。
摘要
将 Internet Explorer 配置为使用自动代理配置脚本时,它会缓存 FindProxyForURL 调用返回的代理。 自动代理结果缓存) (缓存机制在主机 (执行,即(而不是基于 URL) )。 这会阻止你使用不同的代理来获取对同一 Web 服务器的访问权限。 以下示例方案演示了此行为:
-
使用两个虚拟文件夹配置名为“Webserver”的 Web 服务器:“/login”和“/test”。
-
创建以下 PAC 文件:
function FindProxyForURL (url, host) { if shExpMatch (url, "http://webserver/login") return "DIRECT"; else return "PROXY myproxy:80; PROXY mybackupproxy:80"; }
-
将 Internet Explorer 配置为使用此 PAC 文件。
-
启动 Internet Explorer 并键入以下 Web 地址:
http://webserver/loginInternet 资源管理器加载 PAC 文件并正确使用直接连接。
-
出现登录页时,键入 http://webserver/test。 如果使用网络监视器,则可以观察到对“http://webserver/test”的访问仍使用直接连接,而不是返回的代理之一。
详细信息
自动代理结果缓存是已添加到 Internet Explorer 5.5 及更高版本的性能增强。 缓存的目的是减少自动代理配置脚本的客户端处理。 连接到 Internet 站点时,FindProxyForURL 函数用于确定是否应使用代理以及要使用哪个代理。 Internet Explorer 5.5 及更高版本首先检查自动代理结果缓存,以确定在以前的尝试中是否使用了代理连接到主机。 如果此检查失败,则表示这是当前会话期间首次尝试连接到主机,并且会应用正常的代理检测逻辑。
如果将自动代理配置脚本配置为使用,并且 Internet Explorer 能够从网络 (检索该脚本(如果启用了“自动检测设置”选项或“使用自动配置脚本”) ),则自动代理结果缓存将使用正在访问的主机名以及通过分析脚本返回的完整代理服务器集进行更新。 在此示例中,确定使用代理服务器的任何主机名都将具有“PROXY myproxy:80;已将 PROXY mybackupproxy:80“添加到自动代理结果缓存。
在此方案中,“myproxy”用于对缓存主机名的任何后续访问,并且不会重新处理自动代理配置脚本。 如果“myproxy”突然无法访问,则会发生以下情况:
-
“myproxy”代理将添加到错误的代理服务器列表中。
-
选择“mybackupproxy”代理,为来自自动代理结果缓存的主机名请求提供服务。
-
如果连接成功,则会在同一浏览会话期间在此主机名的后续请求中使用“mybackupproxy”。
如果从自动代理配置脚本返回的所有代理服务器都无法访问,则在 Internet Explorer (如果静态代理服务器突然无法访问) ,则会出现“无法显示页面”错误消息。
即使启用了自动代理结果缓存,这仍允许代理故障转移,但不允许为同一主机名指定不同的代理服务器,但对于不同的 URL,例如,如示例中所示。 如果这是一项要求,则可能需要禁用自动代理结果缓存功能。 这将导致对 Internet Explorer 发出的每个 GET 请求进行客户端处理。 因此,Internet Explorer 性能可能会受到影响,具体取决于自动代理配置脚本的逻辑及其大小。 若要禁用自动代理结果缓存,请使用以下方法之一。
注意 如果禁用自动代理缓存,Internet Explorer 性能可能会受到影响。
方法 1:修改注册表
重要:本节、方法或任务包含如何修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows
中备份和还原注册表
可以使用以下注册表项禁用自动代理结果缓存:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings
值:EnableAutoproxyResultCache
类型:REG_DWORD
数据值:0 = 禁用缓存;1 (或密钥不存在) = 启用自动代理缓存 (这是默认行为) 如果没有注册表项,则可以使用以下注册表文件创建注册表项:
Windows 注册表编辑器版本 5.00
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings]"EnableAutoProxyResultCache"=dword:000000000”
方法 2:修改组策略设置
-
单击 “开始”,单击“ 运行”,键入 gpedit.msc,然后单击“ 确定”。
-
在组策略对象编辑器中,双击“用户配置\管理模板\Windows 组件\Internet Explorer”。
-
双击“ 禁用自动代理脚本的缓存”。
-
单击 “启用”,然后单击“ 确定”。
如果使用在同一服务器上处理安全和非安全请求的代理服务器进行连接,则可能需要使用此注册表项。 此行为的一个示例是 SQUID 代理服务器软件。 由于 Internet Explorer 通常缓存端口信息,因此当 Internet Explorer 尝试向同一服务器发送安全和不安全的响应时,它可能不会通过正确的端口号发送安全请求,而是在不同的端口号上发送安全请求。
有关添加错误代理服务器列表的详细信息,请单击下面的序列号以查看 Microsoft 知识库中的文章:
320507 Internet Explorer 在 30 分钟内不会重试错误的代理服务器