2012-02-13 35 views
0

我注意到,對於我的一些ajax請求額外的連接時間正在使用,它幾乎到1秒左右,這使得請求slow.Once一個請求做出後續請求不需要時間來建立連接。但如果我讓它無人照管一段時間再次它使新的連接。我真的不知道瀏覽器在哪種情況下建立一個新的連接。我檢查了其他網站(gmail,stackoverflow),以驗證他們的Ajax請求是否也進行了初始連接,但無法找到任何。是否有任何方法可以避免此連接建立?何時由瀏覽器爲Ajax請求創建新連接?

+0

Thic可能被綁定到瀏覽器(和服務器)中的保持活動時間設置。蠻力的方法是在你的實際請求之間發送'ping'請求,只是爲了看看這是否有幫助。 – Stan 2012-02-13 08:07:44

+0

@Stan:無法理解,請詳細說明。 – Emil 2012-02-13 08:23:07

+0

我想瀏覽器保持一個保持活動期的開放連接,並且如果在超時之前發出新的請求,重用連接。如果您發佈虛擬請求只是爲了保持連接打開,它將不會在下一個工作請求之前關閉,並且會消除建立新連接的開銷。 – Stan 2012-02-13 12:49:42

回答

0

我認爲你應該增加你的AJAX請求的超時時間,這樣你的XHR將保持活動更多時間。當你想要重新連接到服務器以獲得相同的服務時,也嘗試使用相同的XHR對象(刷新後) /resource.However有時,如果瀏覽器在緩存中找到請求的數據,那麼它可能會避免再次請求服務器。還有一個原因可能是每次你的URL被不必要地改變時,所以瀏覽器強制需要請求服務器(對此不太確定)。

UPDATE

var xhr; 
xhr = new XMLHttpRequest(); 
xhr.open("GET", url, true); 
xhr.timeout = 10000; 
xhr.ontimeout = timeoutFired; 
xhr.send(null); 

詳情請參閱thisthis

+0

如何設置更長的超時時間?還我使用post請求,並沒有緩存的數據。 – Emil 2012-02-13 07:17:49

+0

查看已更新的答案。還檢查它不是服務器端問題.. – Ved 2012-02-13 07:24:50