programing

브라우저는 Ajax 요청 후 얼마나 기다려야 합니까?

showcode 2023. 3. 16. 22:00
반응형

브라우저는 Ajax 요청 후 얼마나 기다려야 합니까?

서버가 요구에 응답할 때까지 브라우저가 얼마나 기다려야 오류가 표시됩니까?이 시간이 무제한일 수 있나요?

jQuery $.ajax 호출을 사용하는 경우 타임아웃 속성을 설정하여 요청이 타임아웃 상태로 반환될 때까지의 시간을 제어할 수 있습니다.타임아웃은 밀리초 단위로 설정되어 있으므로 매우 높은 값으로 설정합니다."무제한"을 0으로 설정할 수도 있지만, 제 생각에는 그냥 높은 값으로 설정해야 합니다.

주의: 실제로는 무제한이 기본이지만 대부분의 브라우저에서는 기본 타임아웃이 발생합니다.

타임아웃으로 인해 Ajax 콜이 반환되면 필요에 따라 다른 케이스로 처리할 수 있는 오류 상태 "timeout"이 반환됩니다.

따라서 타임아웃을 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
        }
    }
});​

한마디로 이야기할 수 없군요.네, 서버는 실행할 수 있습니다.또는 그렇게 하도록 설정되어 있습니다.버전/디스트리뷰터의 자세한 내용은 알 수 없습니다.브라우저에서는 타임아웃이 유효하게 되어 있지 않습니다.

단, HTTP를 통해 이를 실현/에뮬레이트하기 위한 솔루션은 다음 2가지가 있습니다.

  • 이것이 단순하고 장시간 실행 중인 스크립트이며 결과를 기다리는 방법이 아닐 경우, 앞서 언급한 포스터와 같이 비동기 처리를 사용하여 결과를 폴링해야 합니다.이것이 훨씬 확실한 해결책이 될 것입니다.예를 들면, 화상 프로세서 서버측의 섬네일 스크립트:사용자는 화상을 업로드 하고, 서버는 즉시 200과 「작업 ID」를 반환한다.그러면 클라이언트(subscript^^)는 Job을 사용할 수 있습니다.작업 상태/결과를 요청하는 ID입니다.
  • 브라우저와 서버 간의 실시간 연결(단방향 연결, 브라우저에 의한 요청이 이루어지면 새로운 요청(polling^^)을 사용하지 않고는 추가 정보를 보낼 수 없음)을 목표로 하는 경우 이를 롱 폴링/프로세서 에이잭스라고 하며 http를 통한 실시간 통신에 사용할 수 있습니다.2개의 긴 폴링 요구를 병렬로 사용하는 수법이 몇 가지 있습니다.그 중 하나가 타임아웃되면 두 번째 요구가 활성화되고 첫 번째 요구가 재접속을 시도합니다.

서버상의 프로세스가 장시간 실행되고 있는지, 로컬 머신만의 설정을 변경하고 싶은지, 아니면 다수의 사용자를 위해 관리하려고 하는지에 대해 좀 더 자세히 설명해 주시겠습니까?

브라우저가 대기하는 시간은 타임아웃 발생 장소 등 여러 요인에 따라 달라집니다.TCP 레벨인지 서버인지 로컬브라우저인지?

서버에서 장시간 실행 중인 프로세스가 있고 나중에 웹 페이지를 업데이트하려면 일반적으로 긴 프로세스를 비동기적으로 실행하여 완료 시 클라이언트에 통지합니다.예를 들어 서버를 폴링하는 Ajax 호출을 하거나 HTTP 1.1을 사용하여 클라이언트에 통지 스트림을 제공합니다.

어느 경우든 연결이 닫힐 수 있으므로 클라이언트는 연결을 다시 열 수 있는 기능이 계속 필요합니다.

일반(HTML 페이지) 요청의 경우 브라우저는 cca 이후 타임아웃까지 실행된다는 것을 알게 되었습니다.30초프록시, 라우터(이 게임에서 라우터가 플레이를 합니까?)와 같은 다른 참가자가 따라 할 수 있기 때문에 중요합니다.잘 모르겠어요.)4초의 서버측 지연(클라이언트에 송신할 필요가 없는 경우)을 사용하고 있으며, AJAX 클라이언트는 즉시 다른 HTTP 요구를 실행합니다(로컬 네트워크상에 있어 인터넷 지연은 없습니다).4초는 서버와 네트워크에 자주 방문하는 폴링을 과부하시키지 않는 충분한 시간입니다.또한 클라이언트가 검출 및 처리할 수 없는 폴링의 행에서1개가 떨어져도 충분히 짧은 시간입니다.

또, 동시 HTTP 요구의 수 제한, 클라이언트측의 이벤트 처리(서버에 즉시 송신할 필요가 있다), 서버/네트워크의 다운 검출과 리커버리, 멀티 유저 처리 등, 다른 문제도 있습니다.

언급URL : https://stackoverflow.com/questions/7297833/how-long-will-the-browser-wait-after-an-ajax-request

반응형