2011-12-20 king9413。
緣起:
最近,單位同事反應使用IE6瀏覽某購物網(wǎng)站發(fā)生問題,網(wǎng)頁顯示不全。本人使用自己的桌面電腦,也發(fā)現(xiàn)同樣的問題。主要現(xiàn)象如下:
一進主頁,IE6顯示“網(wǎng)頁有錯誤”。進入某一物品的購物網(wǎng)頁時,尺寸參數(shù)不能顯示。IE6也顯示這個網(wǎng)頁“網(wǎng)頁有錯誤”。查網(wǎng)頁源代碼,發(fā)現(xiàn)是有Javascipt沒有執(zhí)行。但該問題只針對該網(wǎng)站,其他網(wǎng)站(有JS的網(wǎng)站)倒是正常得很!問題非常奇怪!
經(jīng)搜索及驗證,該問題的標準處理流程如下:
0,退出所有IE,啟動空白IE。
1,IE工具->Internet選項->高級,按“還原默認設置”,按“確認”。
2,IE工具->Internet選項->安全,對“Internet”,選“默認級別”或?qū)Α白远x級別”進行重置。
3,IE工具->Internet選項->常規(guī),對“Internet臨時文件”,“刪除cookiet”,“刪除文件”中選“刪除所有脫機文件”,按“確定”。
4,啟動IE,重新瀏覽網(wǎng)站。
執(zhí)行以上步驟后,理論上可以消除“網(wǎng)頁有錯誤”此問題。
見鬼的是,經(jīng)折騰數(shù)次后,證明此方法對本人機器完全無效。
本人不信邪,繼續(xù)折騰,具體經(jīng)歷如下。
折騰思路:
為折騰得有條理,本人特別將可能出現(xiàn)問題的方面分析如下:
-----------------------------------------------------------------------------------------------
程序:
IE的DLL
升級為IE8
IE的加載項
數(shù)據(jù):
IE的設置(重置及清理緩存)
IE的緩存(index.dat文件)
系統(tǒng)臨時文件
注冊表
代理服務器緩存
網(wǎng)絡:
TCP/IP協(xié)議棧
軟件兼容性:
Mcafee反病毒軟件
360
其他
-----------------------------------------------------------------------------------------------
一共四大方面。本人嘗試過的方法如下:
1,多機器驗證網(wǎng)頁
排除【網(wǎng)頁自身問題】(同時發(fā)現(xiàn)單位部分機器也存在類似問題,但大部分為正常)
2,按照標準處理流程(見此文最初方式)處理(無效)
可排除【IE的設置】
3,使用regsvr32重新注冊IE的所有DLL(無效)
可排除《系統(tǒng)注冊表-部分》
4,在本機注冊新用戶,再用IE瀏覽(無效)
可排除【IE的緩存】(因新用戶IE無緩存)
5,安全模式并取消加載項(無效)
可排除【軟件兼容性】及【IE的加載項】
6,關閉mcafee反病毒及360(無效)
可排除【軟件兼容性】
7,重置tcp/ip協(xié)議棧(無效)
可排除【系統(tǒng)網(wǎng)絡設置】
8,安裝firefox發(fā)現(xiàn)一點問題都沒有。firefox(此網(wǎng)頁正??蔀g覽)
可排除【系統(tǒng)網(wǎng)絡設置】
9,升級為IE8(無效),出現(xiàn)同樣的狀況
可排除【升級為IE8】
10,使用超級兔子、360修復、360安全瀏覽器修復。全部(無效)
可排除《注冊表-部分》及【系統(tǒng)臨時文件】
11,利用超級兔子的IE修復專家,重新安裝IE6(無效)
可排除《IE的DLL-部分》
12,重新打補丁KB2559049(無效)
可排除《IE的DLL-部分》
13,直接安裝部分DLL(從正常瀏覽的機器上copy)(無效)
可排除《IE的DLL-部分》
14,刪除realplayer(無效)
排除《軟件兼容性》realplayer與flash沖突
15,chkdsk清理C,D盤(無效)
排除《系統(tǒng)臨時文件-部分》
16,使用WiseRegistryCleaner清理壓縮注冊表(無效)
排除《注冊表-部分》
17,清理開始菜單的文件(無效)
排除《系統(tǒng)臨時文件-部分》
18,調(diào)整IE設置高級選項(根據(jù)MS知識庫文章)(無效)
排除【IE的設置】
19,12月15日剛好有IE最新補丁,但打完重啟后依然(無效)
徹底排除【IE的DLL】
20,改IP地址、刪除代理緩存(無效)
排除【代理服務器緩存】
21,利用CacheCentry替IE管理緩存(無效)
用大量時間做完以上無用功后,基本把所有可能發(fā)生問題的原因都過濾一遍,但依然無效。本人百思不得其解。
本人堅持“只要不放棄就是成功”,“精誠所至金石為開”等變態(tài)理念,繼續(xù)有空就折騰^_^。
下面是問題真正原因,上面本人寫的可以作為反面教材,全部忽略。
轉(zhuǎn)折點:
某日決定深入研究此問題。變黑箱為白箱。單位機器多,剛好相鄰2臺機器,1臺可以,另1臺不行。經(jīng)對比Internet臨時文件夾,有如下發(fā)現(xiàn):
該網(wǎng)頁某些js文件,在不同機器的臨時文件夾中竟然大小不同。
如jquery-1.3.2.min.js這個文件,在正常機器上是56K。在問題機器上是22K!在本人機器上也是22K。這是關鍵問題。
直接從問題網(wǎng)頁相關url下載jquery-1.3.2.min.js,發(fā)現(xiàn)確實是22K。IE做了什么不同的操作?
解決步驟:
1,先懷疑是編碼問題。難道是UTF-8與GB2312問題。后發(fā)現(xiàn)是本人一時大腦短路。因發(fā)現(xiàn)問題機器上的js文件內(nèi)容是二進制!
2,但問題機器當js出問題,進行調(diào)試時顯示的代碼確實是字符。為何文件體積???為何能變大。本人終于發(fā)現(xiàn)可能經(jīng)過壓縮。把二進制的js文件改名zip,發(fā)現(xiàn)能正確解壓縮。網(wǎng)站對js文件進行了壓縮!昏倒!
3,本人對HTTP協(xié)議略有所知。IE難道處理Content-Encoding:gzip時有問題?果然是。
網(wǎng)上有大量資料說IE6對gzip支持有問題。這個是IE6的bug。這個bug如IE cache bug一樣,到IE8還存在(否則我們就不用清理緩存)
4,進一步發(fā)現(xiàn),IE6對gzip還是有支持的。服務器端也可以做優(yōu)化來避免此問題。況且本單位其他IE6都沒問題的原因何在?頭痛。
5,使用抓包工具觀察下,發(fā)現(xiàn)確實此網(wǎng)站針對IE進行了優(yōu)化,以避免IE6的這個bug。網(wǎng)站在Cache-Control: 中去掉no-cache, no-store。
文章說,IE設置成了HTTP 1.0模式,所以不支持gzip。必須設置為HTTP1.1。打開Internet選項,把高級選項卡中的“使用HTTP 1.1”選項勾選。
7,檢查本人IE發(fā)現(xiàn),“使用HTTP 1.1”已勾選,因“還原默認設置”會自動勾選此選項。那應該不會有問題啊。
8,本人順便發(fā)現(xiàn),在“使用HTTP 1.1”下,還有一個“通過代理連接使用HTTP 1.1”是無勾選的!而本人單位確實是使用代理上網(wǎng)!勾選之,重新進入問題網(wǎng)站。發(fā)現(xiàn)一切正常,問題解決。
總結:
IE6瀏覽某些特定網(wǎng)站“網(wǎng)頁有錯誤”,而其他網(wǎng)站正常。是因為某些特定網(wǎng)站使用了gzip來壓縮js文件(其他css文件或swf文件也可以),而多數(shù)網(wǎng)站沒有使用gzip壓縮或者對IE6進行了屏蔽,因此多數(shù)網(wǎng)站是正常的。
這里又分幾種情況:
1,特定網(wǎng)站使用了gzip,沒有對IE6優(yōu)化。-->IE肯定有顯示有問題。firefox就沒問題。
2,特定網(wǎng)站使用了gzip,對IE6進行了優(yōu)化。-->IE(有開啟HTTP 1.1),顯示正常。
-->IE(沒有開啟HTTP1.1),類似本人是通過代理上的。顯示異常。必須設置相關選項。
深層原因分析:
1,本人發(fā)現(xiàn),初始安裝IE6時,“通過代理連接使用HTTP 1.1”是有勾選的。但本人上某些網(wǎng)站有問題時使用過“還原默認設置”。結果變成無勾選。
2,重裝IE6及使用安全模式,為何都用了同一設置?(XP的問題?)
3,本人又發(fā)現(xiàn),IE8在“還原默認設置”時,是把此選項勾選了的。但IE6沒有!昏倒。又是IE6的bug嗎?本來按照標準流程可以處理的問題變成如此漫長研究過程。
4,為何MS知識庫沒有此類文章?為何IE不修改好所有的bug?估計要直接問下:Bill Gate同學。
得失:
失:耗費大量時間,問題一直未解決。
得:了解了大量知識,發(fā)現(xiàn)大量解決問題方法(雖然無用^_^)。本人機器經(jīng)折騰后快了不少(估計是chkdsk和注冊表壓縮的功勞)。^_^。
題外話:
為何要仍要使用IE6?
1,使用習慣問題。在使用上與IE8確實有很大區(qū)別。
2,為何不用firefox? 因購物網(wǎng)站需要銀行支付,目前很多銀行證書都是綁定IE。
-------------------------------------------------------------------------------------------------------------------------------------------
本文到此結束。