Programing

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

lottogame 2020. 11. 25. 07:27
반응형

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


서버가 요청에 응답하기 전에 오류가 표시되기까지 브라우저가 얼마나 기다려야합니까? 이 시간을 무제한으로 할 수 있습니까?


jQuery $ .ajax 호출을 사용하는 경우 timeout 속성을 설정하여 요청이 시간 초과 상태로 반환되기 전까지의 시간을 제어 할 수 있습니다. 시간 제한은 밀리 초 단위로 설정되므로 매우 높은 값으로 설정하면됩니다. "무제한"의 경우 0으로 설정할 수도 있지만 제 생각에는 대신 높은 값을 설정해야합니다.

참고 : 실제로는 무제한이 기본값 이지만 대부분의 브라우저에는 적중되는 기본 시간 제한이 있습니다.

시간 초과로 인해 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
        }
    }
});​

예, 아니오. 예, 서버가이를 수행하거나 그렇게 구성 할 수 있습니다. 브라우저 (버전 / 배포자 세부 사항에 대해 잘 모릅니다)에서 시간 초과가 활성화되어 있지 않을 수 있습니다.

HTTP를 통해이를 달성 / 에뮬레이션하기위한 두 가지 솔루션이 있습니다.

  • 이것이 간단하고 오래 실행되는 스크립트이고 결과를 기다리고 있다면 이전 포스터가 언급 한대로 수행하고 결과에 대해 서버 폴링과 함께 비동기 처리를 사용해야합니다. 이것은 훨씬 더 확실한 화재 솔루션이 될 것입니다. . 예 : 이미지 프로세서 서버 측의 썸네일 스크립트 : 사용자가 이미지를 업로드하면 서버는 즉시 200과 "작업 ID"를 반환합니다. 그러면 클라이언트 (javascript ^^)는 JobID를 사용하여 작업 상태 / 결과를 요청할 수 있습니다.
  • 브라우저와 서버 간의 실시간 연결과 같은 것을 목표로하는 경우 (단방향 연결, 브라우저에서 요청이 이루어지면 새 요청 (ajax ^^)을 사용하지 않고 더 이상의 정보를 보낼 수 없음)를 롱 폴링이라고합니다. / reverse ajax이며 http를 통한 실시간 통신에 사용할 수 있습니다. 두 개의 긴 폴링 요청을 병렬로 사용하는 몇 가지 기술이 있으므로 그중 하나가 시간 초과되면 두 번째 요청이 활성화되고 첫 번째 요청이 다시 연결을 시도합니다.

달성하려는 작업에 대해 좀 더 설명해 주시겠습니까? 서버에서 오래 실행되는 프로세스가 있습니까, 로컬 시스템에서만 설정을 변경하고 싶습니까, 아니면 많은 수를 관리하는 방법을 찾고 있습니까? 사용자?

브라우저가 대기하는 시간은 시간 초과가 발생하는 위치와 같은 여러 요인에 따라 달라집니다. TCP 수준, 서버 또는 로컬 브라우저입니까?

서버에서 오래 실행되는 프로세스가 있고 나중에 웹 페이지를 업데이트하려는 경우이를 처리하는 일반적인 방법은 긴 프로세스를 비동기 적으로 실행하고 완료 될 때 클라이언트에 알리는 것입니다 (예 : 서버를 폴링하는 ajax 호출이 있음). 또는 HTTP 1.1을 사용하고 클라이언트에 알림 스트림을 제공합니다.

두 경우 모두 연결을 닫을 수 있으므로 클라이언트는 연결을 다시 열 수 있어야합니다.


정상적인 (HTML 페이지) 요청의 경우 브라우저가 cca 이후에 시간 초과로 실행된다는 것을 알았습니다. 30 초 다른 참가자가 프록시, 라우터 (라우터가이 게임에서 작동합니까? 잘 모르겠습니다)를 따르기 때문에 중요합니다. 내가 사용하고 4 초 immediatelly 다른 HTTP 요청을 (클라이언트에게 보낼 것이 존재하지 않는 경우) 긴 서버 측 지연, 내 AJAX 클라이언트 수행 (내가 로컬 네트워크에서 오전, 어떤 인터넷 지연이 없다). 4 초는 빈번한 폴링으로 서버와 네트워크에 과부하가 걸리지 않을만큼 충분히 길고, 클라이언트가 감지하고 처리 할 수없는 행에서 하나의 폴이 빠져 나가는 경우에는 충분히 짧습니다.

또한 comet (긴 HTTP 요청)에는 브라우저의 동시 HTTP 요청 수 제한, 클라이언트 측 이벤트 처리 (즉시 서버에 전송해야 함), 서버 / 네트워크 다운 감지 및 복구, 다중 사용자 처리 등 다른 문제가 있습니다. 기타

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

반응형