<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)航:
     
    主站蜘蛛池模板: 黄网站色成年片大免费高清| 一区二区3区免费视频| 精品国产免费一区二区| 免费的黄色网页在线免费观看| jlzzjlzz亚洲乱熟在线播放| 久久免费看少妇高潮V片特黄| 亚洲性色精品一区二区在线| 亚洲国产精品成人网址天堂| 99精品免费观看| 免费一级全黄少妇性色生活片| 亚洲国产精品一区二区久久| 国产成人涩涩涩视频在线观看免费| 中国一级特黄的片子免费 | 亚洲av无码兔费综合| 中文字幕亚洲乱码熟女一区二区| 国产成人yy免费视频| 一级中文字幕乱码免费| 亚洲av一本岛在线播放| 亚洲女初尝黑人巨高清| 免费精品一区二区三区在线观看 | 国产成人免费a在线资源| 免费国产午夜高清在线视频| 亚洲av无码兔费综合| 久久青青草原亚洲av无码app| 国产免费观看黄AV片| 久久精品国产免费观看三人同眠| 四虎一区二区成人免费影院网址 | 国产精品免费一区二区三区| 亚洲六月丁香婷婷综合| 亚洲AV成人片色在线观看| 免费看国产精品麻豆| 国产精品免费观看久久| 久久狠狠躁免费观看| 国产99久久久久久免费看| 亚洲精品宾馆在线精品酒店| 亚洲精品福利视频| 亚洲精品无码成人AAA片| 亚洲AV中文无码乱人伦在线视色| 毛片a级三毛片免费播放| 在线视频精品免费| **毛片免费观看久久精品|