<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chan Chen Coding...

    IE6的連接數(shù)限制問(wèn)題

    先描述一下問(wèn)題: 
    有一個(gè)管理Job的UI,選中一些Job可以Run,每次只能啟動(dòng)一個(gè)。還有一個(gè)UI通過(guò)Timer定時(shí)發(fā)Ajax請(qǐng)求服務(wù)端,查詢并顯示Job的運(yùn)行狀況(進(jìn)度)。 

    奇怪的問(wèn)題出現(xiàn)了: 
    1)在FireFox和IE8運(yùn)行正常(貌似正常,稍后再解釋)。其他瀏覽器未測(cè)試。 
    2)IE6,7及更早版本,Timer無(wú)法檢測(cè)到多于1個(gè)的Job運(yùn)行。 

    先檢查了一遍代碼,Timer的控制沒(méi)有問(wèn)題。不行就使用Fiddler吧。剛好是IE的問(wèn)題。 

    觀察HTTP發(fā)現(xiàn)一個(gè)現(xiàn)象,運(yùn)行Job的HTTP似乎沒(méi)有成功,因?yàn)锽ody是-1,之后是每隔一秒的Timer發(fā)起的HTTP。如果再啟動(dòng)一個(gè)Job,發(fā)現(xiàn)Timer停止了!! 

    等待第一個(gè)Job運(yùn)行成功之后,Timer又恢復(fù)了(重新發(fā)送Ajax請(qǐng)求)!! 

    似乎是運(yùn)行Job的請(qǐng)求阻塞了(實(shí)際上該請(qǐng)求長(zhǎng)時(shí)間沒(méi)有返回,因?yàn)檫\(yùn)行Job需要幾分鐘甚至更多時(shí)間)。 

    為啥不使用DWR3.0的Push技術(shù)?后來(lái)跟同事討論明白,這不過(guò)是把Timer從客戶端轉(zhuǎn)移到了服務(wù)端。 

    記起來(lái)了,俺好像讀DWR源代碼的時(shí)候(當(dāng)時(shí)對(duì)如何實(shí)現(xiàn)推非常感興趣),見(jiàn)過(guò)一段代碼分析Browser的類型和連接數(shù),有的情況還拋出了異常。 

    明白了,肯定是IE6有連接數(shù)限制問(wèn)題,后來(lái)得知,默認(rèn)情況下,它不支持同時(shí)超過(guò)2個(gè)連接。哈哈。這就對(duì)了。 

    RunJob占用了一個(gè)(幾分鐘不等), 
    Timer占用了一個(gè)(很短暫)。 

    剛好2個(gè)。 
    Java代碼  收藏代碼
    1. public class BrowserDetect  
    2. {  
    3.     /** 
    4.      * How many connections can this browser open simultaneously? 
    5.      * @param request The request so we can get at the user-agent header 
    6.      * @return The number of connections that we think this browser can take 
    7.      */  
    8.     public static int getConnectionLimit(HttpServletRequest request)  
    9.     {  
    10.         if (atLeast(request, UserAgent.IE, 8))  
    11.         {  
    12.             return 6;  
    13.         }  
    14.         if (atLeast(request, UserAgent.Firefox, 3))  
    15.         {  
    16.             return 6;  
    17.         }  
    18.         else if (atLeast(request, UserAgent.AppleWebKit, 8))  
    19.         {  
    20.             return 4;  
    21.         }  
    22.         else if (atLeast(request, UserAgent.Opera, 9))  
    23.         {  
    24.             return 4;  
    25.         }  
    26.         else  
    27.         {  
    28.             return 2;  
    29.         }  
    30.     }  
    31. //....  
    32. }  


    接下來(lái)就是查資料做試驗(yàn),驗(yàn)證該問(wèn)題是否正確。通過(guò)在注冊(cè)表設(shè)置Internet Settings參數(shù),實(shí)現(xiàn)了更多連接。例如10個(gè)。 

    但是Job可能很多,不可能無(wú)限制增加連接數(shù),所以RunJob不應(yīng)長(zhǎng)期占用連接,它應(yīng)該把Job插入隊(duì)列并立即返回。 

    至此問(wèn)題的源頭終于找到了,F(xiàn)iddler又幫了大忙。 

    讀源代碼是了解技術(shù)運(yùn)作細(xì)節(jié)的最好方法,此外還能學(xué)到好的編程習(xí)慣。

    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2013-05-21 15:19 Chan Chen 閱讀(237) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲6080yy久久无码产自国产| 国产又黄又爽又猛免费app| 亚洲色偷偷综合亚洲av78| 香蕉视频在线观看亚洲| 亚洲国产香蕉人人爽成AV片久久 | 国产麻豆成人传媒免费观看| 亚洲AV永久无码天堂影院| 亚洲精品国产福利片| 婷婷亚洲久悠悠色悠在线播放| 亚洲国产香蕉人人爽成AV片久久 | 狠狠入ady亚洲精品| 国产成人精品日本亚洲直接| 久久国产亚洲精品无码| 国产精品亚洲A∨天堂不卡| 国产亚洲精品无码专区| 免费国产不卡午夜福在线| 在线A级毛片无码免费真人| 曰批全过程免费视频在线观看 | 亚洲精品福利网泷泽萝拉| 久久国产亚洲观看| 亚洲av福利无码无一区二区| 亚洲综合另类小说色区| 亚洲精品一级无码中文字幕| 国产免费人人看大香伊| 国产成人一区二区三区免费视频| 最近免费中文字幕4| 成人免费无码大片A毛片抽搐| 欧美大尺寸SUV免费| 麻豆最新国产剧情AV原创免费| 18未年禁止免费观看| 国内精品免费麻豆网站91麻豆 | 最新亚洲卡一卡二卡三新区| 亚洲日日做天天做日日谢| 亚洲 欧洲 日韩 综合在线| 亚洲色精品三区二区一区| 亚洲精品无码不卡在线播放| 亚洲AV永久无码精品一福利| 黄色网址免费在线| 国产日韩久久免费影院| 黄页免费在线观看| 最近2019中文字幕免费直播|