언제 동기식 AJAX 혹은 비동기식 AJAX를 써야하는가?

2020. 4. 11. 01:33웹, 네트워크, 통신

728x90

원문: https://www.thoughtco.com/use-asynchronous-or-synchronous-ajax-2037228

 

대체로 비동기식 호출을 하는 편이 낫다.

 

AJAX는 asynchronous JavaScript and XML(비동기식 자바스크립트와 XML)의 약자이다. 이 기법을 이용해 웹페이지는 비동기적으로 갱신된다. 이는 웹브라우저가 웹문서 전체를 새로고침 할 필요 없이 웹문서의 일부분만을 갱신할 수 있다는 뜻이다.

 

표준적인 웹어플리케이션은 클라이언트와 서버간의 상호작용을 동기적으로 처리한다. 예를 들어 당신이 버튼을 클릭하면, 그 동작과 관련된 메시지가 서버에 전달된다. 그 다음에 서버는 클라이언트로 응답을 한다. 서버가 이렇게 응답을 하여 현재 당신이 머무르고 있는 웹페이지에 변경이 일어나기 전까지 당신은 그 페이지가 아닌 다른 페이지의 요소들과 상호작용할 수 없다. 사용자 입장에서는 불편함을 느끼게 된다.

 

(그니까, 예를 들어 네이버 메인에서 뉴스 목록 넘기기 < 또는 > 버튼을 눌렀을 때, 현재 보고있는 웹문서 전체가 새로고침되지 않고 뉴스 부분만 변경되잖아요? 이건 비동기적 통신을 하기 때문에 가능한 것임.

 

동기적통신 방법을 사용하면 < 또는 > 버튼을 누를때마다 현재 보고있는 웹문서 전체를 새로고침하게 됨. )

 

 

AJAX란 무엇인가? AJAX는 프로그래밍 언어가 아니다. 웹 서버와 통신하는 클라이언트 사이드의 스크립트를 포함하는 기술이다.

 

AJAX의 이름만 보고서는 오해를 할 수도 있다. AJAX가 JavaScript와 XML만 사용한다고 말이다.

실제로 AJAX 어플리케이션은 데이터를 전송하는데 XML을 사용할 수 있지만, 플레인 텍스트(plain text)나 JSON을 사용할 수도 있다. 하지만 보편적으로는 클라이언트가 서버에게 데이터를 요청할 때 XMLHttpRequest object를 사용하고, 데이터를 화면에 보여줄 때 JavaScript를 사용한다.

 

AJAX는 서버와 통신할 때 동기적으로도, 비동기적으로도 통신할 수 있다.

 

동기적(synchronous) AJAX로 통신한다는 말은, 한 작업이 끝나야 그 다음 작업을 할 수 있다는 뜻이다.

비동기적(Asynchronous) AJAX로 통신한다는 말은, 여러 작업이 각기 끝나는 대로 처리된다는 뜻이다.

 

동기적 AJAX로 클라이언트의 요청을 처리한다는 것은, 페이지를 새로고침하는 작업을 포함한다. 하지만 엄밀히 말하면 현재 보고있는 웹문서 전체가 새롭게 reload되는 것이 아니라, 클라이언트가 요청한 정보만을 load하는 것이다.

일반적인 동기적 통신보다 동기적 AJAX 통신의 작동 속도가 빠르기는 하지만 여전히 사용자들은 웹문서가 load되기를 기다려야한다.

 

비동기적 AJAX로 통신하면 클라이언트는 현재 보고 있는 웹문서를 새로고침하지 않고도 자신이 요청한 정보를 업데이트해서 볼 수 있다. 그러므로 비동기적 AJAX는 가능한 모든 곳에서 선호되는 방식이며, AJAX의 디폴트 세팅이기도 하다. ( AJAX syntax에서 async : true 라고 기본적으로 설정되어있다는 뜻임.)

 

그렇다면 왜 동기적 AJAX는 무슨 용도인가? 동기적 AJAX가 필요한 경우가 잦지는 않다. 비동기적 통신을 사용할 수는 없고 웹문서를 새로고침 해야할 때.. 그럴 때 쓴다.

728x90
반응형