브라우저별 AJAX(XmlHttpRequest) 시간 초과 길이
저는 이것에 대한 솔직한 답을 찾으려고 인터넷을 뒤졌습니다.브라우저별 Ajax 요청의 기본 타임아웃 길이를 아는 사람이 있습니까?버전별로 변경된 경우에도?
사양에 따르면 시간 초과 값은 기본적으로 0으로 설정되며, 이는 시간 초과가 없음을 의미합니다.그러나 XHR.timeout 속성에 시간 초과 값을 설정할 수 있습니다. 값은 밀리초 단위입니다.
출처:
http://www.w3.org/TR/2011/WD-XMLHttpRequest2-20110816/ #The-the-messages http://msdn.microsoft.com/en-us/library/cc304105(v=vs.85).aspx
브라우저에는 AJAX에 대한 시간 제한이 없다고 생각합니다. 동기식 또는 비동기식 요청만 있습니다. 동기식 - 먼저 요청이 돌아올 때까지 자바스크립트 실행을 중지합니다. 비동기식 - 자바스크립트 실행을 중지하지 않고 실행 흐름에서 요청을 제거합니다.그리고 콜백 기능이 있으면 실행 중인 스크립트와 병렬로 기능을 실행합니다(스레드와 유사).
**sync flow:**
running JS script
|
ajax
(wait for response)
|
execute callback
|
running JS script
**async flow:**
running JS script
|
ajax --------------------
| |
running JS script execute callback
저는 약간의 테스트를 했습니다.테스트를 위해 웹 사이트를 로드하고 로컬 서버를 중지한 다음 AJAX 요청을 시도했습니다.설정합니다.timeout
내가 최소한의 코드를 가질 수 있을 때까지 1000ms와 같은 낮은 것으로.xhr.timeout
끝나고open
그 이전에 send
).
일단 제가 그것을 작동시키자, 제 첫 번째 목표는 적절한 시간을 허용하는 것이었지만, 저는 얼마나 빨리 그것을 할 수 있는지에 놀랐습니다.timeout
브라우저에 의해 완전히 무시됩니다.제 목표는 오류 처리가 더 이상 불가능해지기 전에 최대 제한 시간을 결정하는 것으로 바뀌었습니다.이는 시간 초과 처리기 스크립트가 상당히 짧은 시간 동안 전혀 작동하지 않는다는 것을 의미합니다.제가 발견한 것은 꽤 한심했습니다.
- Chrome 60: 995ms, 996ms는 콘솔에 더러운 악의 오류를 던집니다.
- Firefox 52 ESR: 최대 3000ms, 마우스 위치 또는 기타 문제로 인해 약 3초 이내에 응답이 없을 수 있습니다.
그래서...
xhr.open(method,url,true);
xhr.timeout = 995;//REALLY short
xhr.send(null);
xhr.ontimeout = function ()
{
//Code will only execute if at or below *effective* timeouts list above.
//Good spot to make a second attempt.
}
그래서 만약 당신이timeout
995ms보다 높게 설정되면 크롬은 당신의 코드를 무시하고 당신이 깨끗하게 유지하기 위해 열심히 만든 깨끗하고 빈 콘솔에 토해낼 것입니다.파이어폭스는 훨씬 나아지지 않았고 내가 가진 인내심을 훨씬 초과하고 그렇게 함으로써 시간이 초과되는 신뢰할 수 없는 요청이 있습니다.ontimeout
파일
브라우저에 시간 초과 값이 있습니다. 동작은 브라우저 크롬의 시간 초과 값이 5분인 경우에 따라 달라지며, 5분 후에는 Ajax 호출을 다시 보냅니다.
언급URL : https://stackoverflow.com/questions/9502410/ajax-xmlhttprequest-timeout-length-by-browser
'programing' 카테고리의 다른 글
UITableView에서 셀을 선택할 수 없도록 만드는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
기본 매개 변수가 있는 저장 프로시저 (0) | 2023.08.20 |
'computer-instance'는 동일한 이미지에 대해 여러 인스턴스를 생성합니다. (0) | 2023.08.20 |
복제되지 않은 DB에 쓰는 경우 MariaDB(10.5.8) Galera 클러스터 노드의 GTID가 동기화되지 않음 (0) | 2023.08.20 |
잠금을 시도할 때 교착 상태가 발견되지 않도록 합니다. 중복 키 업데이트 시 MariaDB(MySQL) INSERT에서 트랜잭션을 다시 시작해 보십시오. (0) | 2023.08.20 |