当您使用 Internet 浏览器 6 尝试访问 Internet Information Services 6.0 上承载的 Web 应用程序时,您可能会遇到 Web 性能较差

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

症状

请考虑以下情形:
  • 在 Microsoft Internet Information Services 6.0 (IIS 6.0) 的 Web 应用程序环境中使用 Windows 集成身份验证。
  • 您可以使用 Microsoft Internet 浏览器 6 来访问 IIS 6.0 上承载的 Web 应用程序。
在这种情况下,您可能会遇到 Web 应用程序性能较差。

注意如果作为身份验证协议使用匿名身份验证,则不会发生此问题。 这还未出现问题如果客户端浏览器是如 Mozilla Firefox 的 Internet 浏览器 6 以外的其他浏览器。

原因

出现此问题的原因是在 Internet 浏览器 6 客户端定期重置 TCP 连接。

如果您分析性能拙劣的客户端和服务器之间通信的过程中捕获网络跟踪,网络跟踪显示客户端收到 200 响应客户端请求该资源后,TCP 重置将会发生。 客户端具有一个 ETag HTTP 标头和值 GET 请求。当正在运行 IIS 6.0 的服务器接收请求时, 它将 ETag 值进行比较,并查找 ETag 值匹配所请求的文件的当前值的更改号码除外。

注意ETag 标头将出现在以下格式:

FiletimestampChangeNumber

例如对于 Internet Explorer 客户端发送一个请求 ETag 值为 0222d5bffcbc41:301a,然后服务器将发送一个 HTTP 200 响应,通过 0222d5bffcbc41:3246 ETag 值。

Filetimestamp 数量在请求中的是相同的数量,IIS 6.0 认为是请求资源的当前值。但是,不同 ChangeNumber 数量在请求中的是 IIS 6.0 发回当前版本的文件,而不通知的 Internet Explorer 提供它自己的缓存的副本。在将该 Filetimestamp 200 响应上使用本地缓存副本的 Timestamp 进行比较的 Internet Explorer 中没有特定的代码。如果它们是相同的编号将被重置连接。这是因为 Internet Explorer 客户端希望接收 304 状态报告,如果内容相同。

也就 IIS 6.0 发送一个 200 的响应,这是因为它认为不同的更改号码来表示由客户端和客户端的预先存在版本驻留在浏览器高速缓存中该资源的请求该资源不是同一版本。 但是,Internet Explorer 会认为它们是相同的版本,因为 Filetimestamp 相同。此外,Internet Explorer 认为在错误中接收 200 的响应。在这种情况下 Internet Explorer 将重置 TCP 连接。

替代方法

如果您正在使用基于 Microsoft Windows Server 2003 的计算机

要变通解决此问题,我们建议您硬编码在 Web 服务器上的更改号码和您在所有 Internet Explorer 客户端的同步文件的版本。所有 Internet Explorer 客户端将都具有所需的应用程序的所有其他文件的版本。 您必须确保服务器和所有客户端已同步。

注意如果在 IIS 6.0 Web 服务器场环境中运行必须硬编码相同的更改号码,在服务器场中运行 IIS 6.0 的所有服务器。

若要同步客户端和服务器之间更改数字值,请按照下列步骤操作。
  1. 手动硬代码 ETag 值,在 IIS 6.0 配置数据库中

    能够修改 ETag 更改号码,在 IIS 6.0 上的是在 Windows Server 2003 Service Pack 1 (SP1) 中可用。

    注意当您更改 ETag 值,而且您必须安装修复程序来解决此问题时,您可能会遇到问题。有关此修补程序的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    900245修改在 IIS 6.0 配置数据库属性时,更新 ETAG 字段中值
    您安装此修复程序后,您可以手动硬编码在 ETag 更改数字。但是,ETag 更改数设置到 Active Directory 服务接口 (ADSI) 命名空间不会公开。 因此,您必须使用配置数据库资源管理器工具来设置值由属性 id。要下载并安装配置数据库资源管理器请访问下面的 Microsoft 网页:
    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/993a8a36 -5761-448f-889e-9ae58d072c09.mspx
    注意在 IIS 6.0 资源工具包中包含配置数据库资源管理器。

    手动硬编码到该 ETag 将更改号码,请按照下列步骤操作:
    1. 打开元数据库资源管理器,展开 LM 在左窗格中,然后展开 W3SVC
    2. 双击 ID 2039 记录,在右窗格中。如果不存在 ID 2039 记录您必须创建它。若要这样做,请按照下列步骤操作:
      1. 用鼠标右键单击 W3svc 节点,在配置数据库资源管理器中的,指向 新建,然后再单击 DWORD 值
      2. 将新的 DWORD 的标识符设置为 2039年
      3. 将新的 DWORD 的值设置为 0
    3. 取值 框中键入 0

      注意 框中键入的数值必须介于 0 到 4294967295 之间。 此外,服务器场中的所有服务器必须在 取值 框中都具有完全相同的数字。有关详细的信息,请访问下面的 Microsoft 网页:
      http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ef7f9d58- 2a96-4bd8-8ac1-2a67b43284f1.mspx
    4. 单击 应用,然后单击 确定
    注意如果要在 IIS 6.0 Web 服务器场环境中运行 IIS 6.0 服务器,重复执行步骤 1a 到 1d 场中的所有 IIS 6.0 服务器上。 请确保您添加的相同更改的所有服务器上的数字值。
  2. 清除在 Internet Explorer 中的客户端浏览器高速缓存

    如果存在太多的客户端浏览器来手动清除缓存您可以选择在 IIS 6.0 中的 启用内容过期,然后指定内容立即过期。在这种情况下,您需要离开 启用内容过期 为开启,只要所需的所有客户端具有最新的内容。 然后,您需要关闭使有机会再次提供缓存的内容的 Internet Explorer 启用内容过期。若要能够内容过期,请按照下列步骤操作:
    1. 打开 Internet Information Services。
    2. 在左边的窗格中展开 LocalMachine,然后单击 网站
    3. 用鼠标右键单击 网站,然后单击 属性
    4. HTTP 标头 选项卡上单击以选中 启用内容过期 复选框,然后单击 立即过期 选项。
    5. 停止并重新启动 IIS 6.0 的所有服务。
    注意 客户端可能需要更新 Internet Explorer 缓存在启用 启用内容过期 复选框后,使两个请求的资源。

如果您没有使用一台基于 Windows Server 2003 的计算机

要变通解决此问题,"清除客户端浏览器高速缓存在 Internet Explorer 中"部分中使用该过程所述启用 IIS 6.0 中的 启用内容过期 选项,并使其保持上。此外,关闭缓存在 Internet Explorer 中或在 Web 应用程序中设置缓存控件标头。有关如何防止缓存的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
311006如何防止 Windows 2000 中的 Web 高速缓存

状态

Windows Internet 浏览器 7 已经过修改,可以正确处理该 ETag 更改号码根据 RFC 2616。但是,如果更改了 ETag 号,Windows Internet 浏览器 7 将下载完整的文件,而不是取消连接。此行为会降低性能的 Internet 浏览器 7 与 Internet 浏览器 6 进行比较。

更多信息

如果您分析会捕获客户端或在的服务器上的网络监视跟踪,并且在性能的情况下涉及此跟踪,则您会看到下面的一系列:
  1. 客户端将 GET 请求发送到运行 IIS 6.0 的服务器并请求包括一个 Filetimestamp 一个无匹配的 If 标头: ChangeNumber 值。此请求类似于以下内容:
    HTTP: GET Request from Client
    HTTP: Request Method =GET
    HTTP: Uniform Resource Identifier =/MARRS/webService.htc
    HTTP: Protocol Version =HTTP/1.1
    HTTP: Accept = */*
    HTTP: Accept-Encoding =gzip, deflate
    HTTP: If-Modified-Since =Tue, 16 Nov 2004 17:11:48 GMT
    HTTP: If-None-Match ="0222d5bffcbc41:301a" 
    HTTP: User-Agent =Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET 
    CLR 1
    HTTP: Host =nnoma-wwapp02m
    HTTP: Connection =Keep-Alive
    HTTP: Authorization =Negotiate 
    TlRMTVNTUAADAAAAGAAYAG4AAAAKAQoBhgAAAAoACgBIAAAAEgASA
    HTTP: Cookie =ASP.NET_SessionId=uqnwgpygpf0dh2iwysznat55
    
    笔记 HTTP 变量,这些示例中的一些可能在您的环境中的不同。
  2. 服务器接收请求并发送一个 200 的响应连同请求的数据。 因为客户端发送无匹配的 If 标头,IIS 6.0 将有一个 ETag 响应标头和头值包括在其响应。此响应类似于以下内容:
    HTTP: Response to Client; HTTP/1.1; Status Code = 200 - OK
    HTTP: Protocol Version =HTTP/1.1
    HTTP: Status Code = OK
    HTTP: Reason =OK
    HTTP: Content-Length =51622
    HTTP: Content-Type =text/x-component
    HTTP: Last-Modified =Tue, 16 Nov 2004 17:11:48 GMT
    HTTP: Accept-Ranges =bytes
    HTTP: ETag ="0222d5bffcbc41:3246"
    HTTP: Server =Microsoft-IIS/6.0
    HTTP: X-Powered-By = ASP.NET
    HTTP: Date =Tue, 27 Sep 2005 12:18:27 GMT
    HTTP: Data: Number of data bytes remaining = 1202 (0x04B2)
    
  3. 客户端接收响应。 响应有而不是浏览器所那 HTTP 304 状态的一个 HTTP 200 状态。因此,浏览器发送一个 TCP RST 重置连接。它这样做是因为 Internet Explorer 认为服务器发送的 HTTP 200 状态出现错误。TCP RST 类似于以下内容:
    TCP: Control Bits: .A.R.., 
    TCP: Source Port = 0x0747
    TCP: Destination Port = World Wide Web HTTP
    TCP: Sequence Number = 3840808344 (0xE4EE1598)
    TCP: Acknowledgement Number = 3150159894 (0xBBC3A016)
    TCP: Data Offset = 20 bytes
    TCP: 0101.... = Data Offset (20 bytes)
    TCP: ....0000 = Reserved bits
    TCP: Flags = 0x14 : .A.R..
    TCP: ..0..... = No urgent data
    TCP: ...1.... = Acknowledgement field significant
    TCP: ....0... = No Push function
    TCP: .....1.. = Reset the connection
    TCP: ......0. = No Synchronize
    TCP: .......0 = Not the end of the data
    TCP: Window = 0 (0x0)
    TCP: Checksum = 0xF26C
    TCP: Urgent Pointer = 0 (0x0)
    
    传输控制协议 (TCP) 有关的详细信息,请访问以下网页:
    http://www.faqs.org/rfcs/rfc793.html

属性

文章编号: 922703 - 最后修改: 2007年6月7日 - 修订: 3.2
这篇文章中的信息适用于:
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Information Services 6.0
关键字:?
kbmt kbtshoot kbprb KB922703 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 922703
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