(번역) 주의 깊게 XMLHttpRequest 재시도하기
원문: https://lofi.limo/blog/retry-xmlhttprequest-carefully
작가의 이 사이트를 방문해보는 건 어떤가요? http://lofi.limo/
XMLHttpRequest(또는 동등한 기능을 갖춘 새로운 API인 fetch)를 사용하지 않는 웹앱을 보는 것은 드문 일입니다. XMLHttpRequest(간단하게 XHR로도 부를 수 있습니다)는 셔츠 주머니처럼 편리하지만 강력하고 탄력적인 프로그래밍 방식을 장려하는 데는 큰 도움이 되지 않습니다. 실제 환경에서 실행되는 모든 앱은 때때로 일시적인 네트워크 중단(interruption)과 서버 중단(outage)에 직면할 수 있습니다. 그럴 때 우리는 요청을 자동으로 재시도함으로써 두 가지 문제를 정상적으로 복구해야 합니다. 그러나, 너무 빨리 재시도를 하거나 모든 클라이언트가 동시에 재시도 함으로써 일시적인 서버 중단을 더 큰 문제로 만들어서는 안 됩니다.
우리는 여기서 세 가지 구체적인 목표를 제공합니다.
- 오류가 발생하면 XHR을 다시 시도하세요.
- 다시 시도하기 전에 적절한 시간을 일시 중지하세요.
- 일시 중지 시간을 랜덤화하세요.
만약 “여러분을 위해 모든 것을 처리한다”는 철학을 갖는 프레임워크를 사용 중이라면, 어떻게 무엇을 하고 있는지 확인하고 싶을 수 있습니다. 그럴 때 최고의 경우, 도구에 대해 배우고 조절하고 싶은 설정을 찾을 수 있을 것입니다. 최악의 경우 프레임워크가 당신이 믿고 있는 만큼 당신을 위해 처리해주지 않고 있다는 것을 알게 될 수 있습니다.
자동 재시도
error 이벤트나 timeout 이벤트를 통해 XHR에 문제가 있음을 알게 되거나, onload 이벤트 핸들러를 통해 오류가 일어나고 있음을 알 수 있습니다. 목록 1에서는 오류가 감지될 때 자동으로 재시도하는 방법을 소개합니다.