當您使用 Internet Explorer 6 嘗試存取裝載於網際網路資訊服務 6.0 的 Web 應用程式時,可能會遇到 Web 效能不佳

文章翻譯 文章翻譯
文章編號: 922703 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

考慮下列案例:
  • Microsoft 網際網路資訊服務 6.0 (IIS 6.0) Web 應用程式環境中,您可以使用 Windows 整合式驗證。
  • 您可以使用 Microsoft Internet Explorer 6 存取裝載在 IIS 6.0 的 Web 應用程式。
在此案例中,您可能會遇到 Web 應用程式效能不佳。

附註如果匿名驗證做為驗證通訊協定,則不會發生問題。 如果用戶端瀏覽器以外的 Internet Explorer 6 例如 Mozilla Firefox 瀏覽器,這個問題也不會發生。

發生的原因

Internet Explorer 6 用戶端定期重設 TCP 連線,就會發生這個問題。

如果您分析用戶端與伺服器之間的 [執行不良的] 通訊期間所擷取的網路追蹤,網路追蹤會顯示 TCP 重設用戶端收到用戶端要求的資源 200 回應之後,將會發生。 用戶端會讓 GET 要求具有 ETag HTTP 標頭和值。當執行 IIS 6.0 的伺服器收到要求時,它比較 ETag 值,並尋找 ETag 值符合要求的檔案 ’s 目前,以外的值變更號碼。

附註ETag 標題會顯示在下列格式:

FiletimestampChangeNumber

例如,Internet Explorer 用戶端會傳送 ETag 值為 0222d5bffcbc41:301a,要求然後伺服器會傳送 ETag 值為 0222d5bffcbc41:3246 將 HTTP 200 的回應。

在要求中的 Filetimestamp 數是相同的數字,IIS 6.0 會視為是要求資源目前的值。但因為在要求中的 ChangeNumber 數不同所以 IIS 6.0 會傳回目前版本的檔案,而不是說的 Internet Explorer 來處理它自己的快取的複本。比較 Filetimestamp 200 回應上與在本機快取複本 Timestamp 的 Internet Explorer 中沒有特定的程式碼。如果它們相同的號碼,會重設連接。這是因為 Internet Explorer 用戶端期望收到 304 狀態報表,如果內容顯示為相同。

亦即 IIS 6.0 傳送 200 的回應,因為它會視為不同的變更數字來表示依用戶端和用戶端 ’s 既有版本的瀏覽器快取都位於此資源所要求的資源不是相同的版本。 不過,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. 手動硬式程式碼在 IIS 6.0 Metabase ETag 值

    能夠修改 ETag 變更號碼,在 IIS 6.0 上的均可使用 Windows Server 2003 Service Pack 1 (SP1)。

    附註當您變更 ETag] 值,您必須安裝 Hotfix 以修正這個問題時,可能會遇到問題。如需有關 Hotfix 的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    900245當您修改在 IIS 6.0 的 Metabase 屬性時,會更新 ETAG 欄位中值
    安裝 Hotfix 之後您可以手動硬編碼 [ETag 變更數字。不過,ETag 變更號碼設定不會公開給 Active Directory 服務介面 (ADSI) 命名空間。 因此,您必須使用 Metabase 總管工具來設定值乘以屬性 ID。若要下載並安裝 Metabase 總管,請造訪下列 Microsoft 網頁]:
    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/993a8a36 -5761-448f-889e-9ae58d072c09.mspx
    附註Metabase 總管會包含在 IIS 6.0 資源套件。

    用手動硬編碼 [ETag 變更數字,請依照下列步驟執行:
    1. 開啟 Metabase 檔案總管]、 展開左窗格中的 LM 然後再展開 W3SVC
    2. 連按兩下 [ID 2039 記錄在右窗格中。如果找不到識別碼 2039年記錄,您必須建立它。要這麼做,請您執行下列步驟:
      1. 在 Metabase 總管] 中的 [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. 開啟網際網路資訊服務。
    2. 展開左邊窗格的 LocalMachine,然後按一下 [網站]
    3. 以滑鼠右鍵按一下 網站,然後按一下 [內容]
    4. 在 [HTTP 表頭] 索引標籤上按一下以選取 [啟用內容的到期日] 核取方塊,然後按一下 [立即到期] 選項]。
    5. 停止並重新啟動 IIS 6.0 的所有服務。
    附註 用戶端可能必須更新 Internet Explorer 快取已啟用 [啟用內容的到期日] 核取方塊後進行兩個資源的要求。

如果您不使用 Windows Server 2003 電腦

要解決這個問題,"清除用戶端瀏覽器快取在 Internet Explorer 中的 「] 區段中使用所描述的程序啟用 IIS 6.0 中的 [啟用內容的到期限制] 選項,並將上]。此外,關閉 Internet Explorer 中的快取,或在 Web 應用程式中設定快取控制標頭。如更多有關如何避免 Web 快取,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
311006如何防止 Web 快取在 Windows 2000 中

狀況說明

Windows 網際網路總管 7 已正確處理 ETag 變更號碼,根據 RFC 2616 以修改過。不過,如果變更 ETag 數 Windows 網際網路總管 7 會下載完整檔案,而不是正在取消連接。這種行為可以減緩網際網路總管 7 相較於 Internet Explorer 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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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