서버가 요청에 응답하기 전에 오류가 표시되기까지 브라우저는 얼마나 오래 기다릴 수 있습니까? 이 시간은 무제한이 될 수 있습니까?ajax 요청 후 브라우저는 얼마나 오래 기다릴 것입니까?
답변
jQuery $ .ajax 호출을 사용하는 경우 요청이 시간 초과 상태와 함께 반환되기까지의 시간을 제어하는 timeout 속성을 설정할 수 있습니다. 제한 시간은 밀리 초 단위로 설정되므로 매우 높은 값으로 설정하십시오. "무제한"으로 0으로 설정할 수도 있지만 제 의견으로는 대신 높은 값을 설정해야합니다.
참고 : 무제한은 actually the default이지만 대부분의 브라우저에는 적중 될 기본 시간 제한이 있습니다.
시간 초과로 인해 ajax 호출이 반환되면 필요한 경우 별도의 대소 문자로 처리 할 수있는 "시간 초과"오류 상태와 함께 반환됩니다.
그래서 3 초 시간 제한을 설정하고 여기에 타임 아웃을 처리하려는 경우 예는 다음과 같습니다
$.ajax({
url: "/your_ajax_method/",
type: "GET",
dataType: "json",
timeout: 3000, //Set your timeout value in milliseconds or 0 for unlimited
success: function(response) { alert(response); },
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
alert("Call has timed out"); //Handle the timeout
} else {
alert("Another error was returned"); //Handle other error type
}
}
});
'timeout'값을 '0'으로 설정하면 AJAX 시간 초과가 무한 기간 (읽기 제한 없음)으로 설정됩니다. – John
@ 존 또는 전혀 설정하지 않음 (기본값은 0입니다). –
"시간 초과"가 아닌 textStatus에서 "오류"가 나타납니다. – UmaShankar
달성하려는 목표에 대해 좀 더 설명 할 수 있습니까? 서버에서 장기간 실행되는 프로세스가 있습니까, 로컬 시스템에서만 설정을 변경 하시겠습니까, 아니면 관리 할 방법이 있습니까? 그것은 많은 사용자를위한 것입니까?
브라우저가 대기하는 시간은 여러 가지 요인에 따라 달라집니다. 시간 초과가 발생하는 곳 - TCP 수준, 서버 또는 로컬 브라우저에서입니까?
서버에서 오랫동안 실행중인 프로세스가 있고 이후에 웹 페이지를 업데이트하려는 경우 일반적으로 긴 프로세스를 비동기 적으로 실행하고 클라이언트가 완료 될 때이를 알리는 등의 일반적인 방법이 있습니다. 서버를 폴링하는 ajax 호출을 사용하거나 HTTP 1.1을 사용하여 클라이언트에 알림 스트림을 제공하십시오.
어느 경우 든 여전히 연결을 닫을 수 있으므로 클라이언트는 여전히 연결을 다시 열어야합니다.
예 아니요. 예, 서버가 그렇게 할 수 있거나 그렇게하도록 구성 할 수 있습니다. 브라우저 (버전/배포자 세부 사항에 대해 잘 모릅니다)에서 시간 초과가 활성화되었을 수 있습니다.
이 개 솔루션이 있습니다하지만/달성 HTTP를 통해이 문제를 에뮬레이트 :이 장기 실행 스크립트가 당신이 갈 길을 밤은 결과를 기다리고있는 간단한 경우
- , 당신은 대신으로해야 이전 게시자는 언급 한 결과에 대한 서버 폴링과 함께 비동기 처리를 사용합니다. 이는 훨씬 더 확실한 화재 솔루션이 될 것입니다. 예 : 이미지 프로세서 서버 측의 축소판 스크립트 : 사용자가 서버가 imidiatly 200 및 "Job ID"를 반환하는 이미지를 업로드합니다. 클라이언트 (javascript ^^)는 JobID를 사용하여 작업 상태/결과를 요청할 수 있습니다.
- 브라우저와 서버 간의 실시간 연결 (일방 통행 연결)을 사용하는 것이 목표라면 브라우저가 요청하면 새로운 요청 (ajax ^^)을 사용하지 않고 추가 정보를 보낼 수 없습니다.) 긴 폴링/역방향 아약스라고하며 http를 통한 실시간 통신에 사용될 수 있습니다. 병렬로 2 개의 긴 폴링 요청을 사용하는 기술이 여러 개 있으므로 한 개는 시간 초과되고 두 번째는 활성화되고 첫 번째는 다시 연결을 시도합니다.
큰 응답, thanks –
정상적인 (HTML 페이지) 요청의 경우 브라우저가 cca 이후에 시간 초과되도록 실행됩니다. 30 초. 프록시를 사용하는 다른 참가자 (프록시가이 게임에서 라우터를 사용합니까? 확실하지 않음)가 중요하기 때문에 중요합니다. 4 초 긴 서버 측 지연 (클라이언트에 보낼 것이없는 경우)을 사용하고 있으며 내 AJAX 클라이언트는 즉시 다른 HTTP 요청을 수행합니다 (로컬 네트워크에 있습니다. 인터넷 지연이 없습니다). 4 초는 서버와 네트워크에 자주 폴링하는 것을 방지하기에 충분히 길며, 클라이언트가 감지하고 처리 할 수없는 행에서 폴링이 하나라도 빠지면 케이스에 대해 충분히 짧습니다.
또한 comet (긴 HTTP 요청)과 관련하여 브라우저의 동시 HTTP 요청 수 제한, 클라이언트 측 이벤트 처리 (즉시 서버로 전송해야 함), 서버/네트워크 탐지 및 복구 , 다중 사용자 처리 등.
- 1. NetworkStream Read는 얼마나 오래 기다릴 것입니까?
- 2. 브라우저는 "방문한 시간"링크를 얼마나 오래 기억합니까?
- 3. Apache 프로세스가 중단되었습니다. 얼마나 오래 갈 것입니까?
- 4. WCF에 비누 요청 후 얼마나 오래 객체가 메모리에 남아 있습니까?
- 5. Ajax 요청 후 장고 모델 반환 Ajax 요청 후
- 6. $ string의 조각이 얼마나 오래 ... 얼마나 오래 ... 자바 스크립트 P2
- 7. setInterval이 Ajax 요청 후 중단됩니다.
- 8. php :: 얼마나 오래 tmp 파일에 머무를까요?
- 9. Ajax 타임 아웃을 얼마나 오래 설정할 수 있습니까?
- 10. 세션 쿠키는 얼마나 오래 보관합니까?
- 11. CodeBehind의 오브젝트는 얼마나 오래 존재합니까?
- 12. 현재 세션은 얼마나 오래 지속됩니까?
- 13. jQuery SimpleModal이 AJAX 요청 후 크기 조정
- 14. AJAX 요청 후 siFR을 다시 실행하십시오.
- 15. Ajax 요청 후 IE9 새로 고침
- 16. PrimeFaces dataTable이 Ajax 요청 후 업데이트되지 않습니다.
- 17. ajax 요청 후 Cufon이 작동하지 않음
- 18. Ajax 요청 후 메모리를 확보하는 방법
- 19. AJAX 요청 후 렌더링이 완료되는 방법
- 20. ajax 요청 후 도조 위젯 다시로드
- 21. Ajax 요청 완료 후 양식 제출
- 22. 다른 Ajax 요청 후 Ajax (pjax) 페이지 매김이 깨집니다.
- 23. 새로운 Ajax 요청 모든 Ajax 요청 완료
- 24. AJAX 요청 집계/수집
- 25. Macport를 통한 루비 설치가 진행되지 않습니다. 이 행동은 얼마나 오래 걸릴 것입니까?
- 26. 컨텍스트 스위치는 Linux에서 얼마나 오래 걸립니까?
- 27. 리소스 클라이언트 측을 얼마나 오래 캐시합니까?
- 28. LINQ DataContext를 얼마나 오래 보관해야합니까? ASP.Net 페이지
- 29. 모듈이 Perl 코어에 얼마나 오래 있었습니까?
- 30. Quartz에서 작업이 얼마나 오래 실행되었는지 알아보기
회원님이 사용하고 있지만, 예 당신이 제한 시간을 연장 할 수 있는지 확인합니다. 무한하려면, 나는 모른다. 무제한 시간을 사용하지 말 것을 권장합니다. 필요한 경우 90 초 또는 약간 더 길게 설정할 수 있습니다. 30 초보다 오래 걸리면, 뭔가를하는 것이 더 빠르고 더 빠른 방법 일 것입니다. – Matt
+1 - 나는 또한 이것에 대해 궁금합니다. 나는 당신이 클라이언트 시간 초과에 대해 걱정할 필요가 있다고 생각했다. 너는 이것에 대한 통제권이 없다. Google 검색 결과가 나타났습니다. 기본적으로 서버 또는 브라우저가 시간 초과 될 수 있습니다. 그래서 나는 모든 브라우저의 기본값이 초과하지 않을 것을 선택합니다. http://support.microsoft.com/kb/813827 – mrtsherman
디버깅을 할 때 나는 아약스 호출 후 점심 식사에 나가서 여전히 회신을 기다리는 브라우저로 돌아왔다. 내 디버거를 클릭하면 브라우저가 응답을 선택했습니다. 내가 디버깅을했기 때문에 나는 이것이 중요하다고 생각하지 않는다. –