跳到主要內容

發表文章

目前顯示的是有「ajax」標籤的文章

AJAX 網頁卡住?可能是超過瀏覽器同時連線數上限 (max HTTP connection)

若你的程式中使用如 comet 這種 server push 技術的話,就會產生一個不中斷的 HTTP 連線,也就是發出的 AJAX request 不會立即收到伺服器的回覆,一般來說並不會造成問題,但若是使用者開啟多個頁面 (tab) 的話,就會產生多個不中斷連線,而各個瀏覽器對於同一個網站所允許的同時連線數的上限一般不大,多為 6 的左右,請參考 Connections per hostname 一旦達到連線數上限,之後所發出的 AJAX request 都會卡住而不會送出。從瀏覽器的 developer tool 就可以觀察到,你會發現不會顯示任何 request 相關的細節。更詳細的套論可以參考相關文章: Maximum concurrent connections to the same domain for browsers 這個跟 Firefox 的 network.http.max-connections-per-server 不同,這是指 Firefox 本身總共能發出的 HTTP 連線數總量,也就是所有 tab 加起來的數量。

IE 中 AJAX 請求被取消的問題

http://stackoverflow.com/questions/13390189/do-ajax-applications-that-use-post-requests-always-fail-in-internet-explorer 簡言之,如果伺服器 keep-alive 設定小於 60 秒 (IE 預設值), IE 就會持續使用一個已經被伺服器關掉的 HTTP 連線,如此會造成 AJAX 請求被中止,從 developer tool 上可以看到請求的狀態是 aborted。 console 也可以看到如下的錯誤訊息: XMLHttpRequest: Network Error 0x2ef3 你可透過這個頁面來重製這個問題 http://pubdev.hitech.com/test.post.php 目前唯一的解法是是調整伺服器 keep-alive 設定,例如 Tomcat https://tomcat.apache.org/tomcat-6.0-doc/config/http.html