for (var i = 0; i < 5; ++i) {
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
xhr.open('GET', '/Test/LongOperation?p=' + new Date());
xhr.send('');
}
이것은 실제 데모 (라이브 코드가 아님)이지만 핵심적인 문제를 보여줍니다. LongOperation
은 10 초 후에 결과를 반환하는 메서드입니다.4 개 이상의 비동기 XmlHttpRequests가 동시에 트리거 될 때 IE8이 중단됩니다.
질문 : 사용자가 위의 코드가 실행 된 후 페이지 오른쪽에서 멀리 이동하려고 할 때
왜 IE8 (그리고 어쩌면 다른 정보 요소)가 정지합니까? FireFox/Safari는 이러한 요청을 취소하고 다른 페이지 탐색을 허용합니다.
'i < 5'
을'i < 4'
으로 바꾸면 IE가 중단되지 않습니다.이 추한 IE 동작을 해결하려면 어떻게해야합니까? 사용자가 브라우저가 갑자기 멈 추면 매우 화가납니다.
AFAIK 제한이 난 때문에 RFC는 "하나의 서버에 2 개의 동시 연결"을 표시합니다. –
가장 좋은 방법은 이것이 문제인지 이해하려면 관련 레지스트리를 찾아 동시 연결 번호를 변경하고 다시 시도하십시오. 여전히 중단되는지 확인하십시오. –
도움에 감사드립니다. 레지스트리 정보,이 '기능'에 대해 알고 있지만 사용자가 컴퓨터의 레지스트리에서 필요한 설정을 변경하도록 할 수는 없습니다. 한계에 대해서도 파이어 폭스는 비슷한 제한이 있지만 정지하지는 않습니다. 제한은 한계에 도달하면 추가 요청이 완료 될 때까지 추가 요청이 서버에 전송되지 않고 대기열에 넣어지고 실행될 것이라는 것을 의미합니다. IE에서 문제가 발생합니다. 페이지에서 벗어날 때 IE에서 _queued_ 요청 브라우저가 멈춘 경우 – Roman