文章编号: 271361 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

在配置 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";
    }
  • 配置 Internet Explorer 以使用此 .pac 文件。
  • 启动 Internet Explorer 并键入以下 Web 地址:
    http://webserver/login
    Internet Explorer 将加载此 .pac 文件并正确使用直接连接。
  • 在出现登录页时,键入 http://webserver/test。如果您使用网络监视器,则会发现对“http://webserver/test”的访问仍使用直接连接而非“myproxy”。

更多信息

“自动代理结果缓存”是添加到 Internet Explorer 5.5 及更高版本中的一项增强性能。此缓存的目的是为了减少自动代理配置脚本在客户端的处理。在连接到某个 Internet 站点时,会使用 FindProxyForURL 函数来确定是否应使用代理以及应使用哪一种代理。Internet Explorer 5.5 及更高版本首先检查“自动代理结果缓存”,以确定以前的连接尝试是否使用了代理连接到主机。如果此检查失败,则表明这是当前会话期间到主机的第一次连接尝试,所以应使用正常的代理检测逻辑。下表举例说明了 Internet Explorer 5.5 及更高版本在确定是否应该使用代理以及应使用哪一种代理时所用的逻辑:
  • 如果在 Internet Explorer 中打开了“自动检测设置”,将尝试从局域网 (LAN) 下载 Wpad.dat 文件并将其作为自动代理配置脚本处理。如果从该脚本返回一个代理并且 Internet Explorer 已经通过该代理建立了连接,则使用返回的主机和代理服务器名称更新“自动代理结果缓存”。
  • 如果在 Internet Explorer 中打开了“使用自动配置脚本”,则会下载自动代理配置脚本并处理它。如果从该脚本返回一个代理并且 Internet Explorer 已经通过该代理建立了连接,则使用返回的主机和代理服务器名称更新“自动代理结果缓存”。
  • 如果 Internet Explorer 是针对静态代理服务器配置的,将从注册表中检索代理服务器名称。
当 Internet Explorer 使用自动代理配置脚本时,如果脚本的处理结果表明将使用一个代理,则会使用代理服务器打开一个连接。如果此代理服务器无法建立连接,则此代理服务器的名称将添加到不良代理服务器链接列表中,这样在 30 分钟内将不使用它。如果自动代理配置脚本中有一个返回的 PROXY 列出了多个代理服务器,则会尝试此列表中的下一个代理,直至遍历此列表或建立了连接。如果遍历此列表后仍未建立连接,那么您将在 Internet Explorer 中看到“Page Cannot Be Displayed”这一错误消息。

在通过代理服务器建立连接后,将缓存站点主机名以及代理服务器的名称。在同一会话中以后再次尝试访问该主机名时,将使用 Internet Explorer 已经缓存的关于使用哪一个代理的信息。因此,所有后续的到此主机的连接都将通过以前使用的代理。这就意味着,如果缓存的服务器名在此会话期间变为不可用,将不会重新处理自动代理配置脚本,而且您将在 Internet Explorer 中看到“Page Cannot Be Displayed”这一错误消息。

可能需要禁用“自动代理结果缓存”以提供所需的代理冗余。这会导致需要对 Internet Explorer 发出的每一个 GET 请求执行客户端处理。其结果是 Internet Explorer 的性能将受影响,具体情况视“自动代理配置脚本”的逻辑及其大小而定。要禁用“自动代理结果缓存”,请使用下列方法之一:

注意如果禁用自动代理缓存,可能会影响 Internet Explorer 的性能。

方法 1:修改注册表

重要说明:此部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请一定严格按照下列步骤操作。为了获得进一步保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows XP 中备份和还原注册表


您可以使用下面的注册表项禁用“自动代理结果缓存”:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings


数值:EnableAutoproxyResultCache
类型:REG_DWORD
数据值:0 = 禁用缓存;1(或注册表项不存在) = 启用自动代理缓存(这是默认设置)
如果此注册表项不存在,您可以使用以下注册表文件创建该注册表项:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings]"EnableAutoProxyResultCache"=dword:00000000"

方法 2:修改组策略设置

  1. 单击“开始”,单击“运行”,键入 gpedit.msc,然后单击“确定”。
  2. 在组策略对象编辑器中,依次双击“用户配置”、“管理模板”、“Windows 组件”、“Internet Explorer”。
  3. 双击“禁用缓存自动代理脚本”。
  4. 单击启用,然后单击确定
如果您使用在同一个服务器上处理安全和非安全请求的代理服务器进行连接,则可能必须使用此注册表项。SQUID Proxy Server 软件就是有这一行为的代理服务器的一个例子。因为 Internet Explorer 通常会缓存端口信息,所以当它尝试将安全和非安全响应发送到同一服务器但使用服务器的不同端口号时,它可能无法通过正确的端口号发送安全请求。 有关添加到不良代理服务器列表中的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
320507 Internet Explorer 长达 30 分钟无法重试不良代理服务器

属性

文章编号: 271361 - 最后修改: 2011年5月12日 - 修订: 3.0
这篇文章中的信息适用于:
  • Windows Internet Explorer 9
  • Windows Internet Explorer 8
  • Windows 7 Enterprise
  • Windows 7 Enterprise N
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Home Premium N
  • Windows 7 Professional
  • Windows 7 Professional N
  • Windows 7 Starter
  • Windows 7 Starter N
  • Windows 7 Ultimate
  • Windows 7 Ultimate N
  • Microsoft Internet Explorer 6.0
  • Windows Internet Explorer 7
关键字:?
kbenv kbhowto KB271361
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com