Ajax는 Asyncronous Javascript And XML의 줄임말입니다. 비동기 자바스크립트와 XML이라는 뜻을 가졌는데, 구체적으로 이야기하자면 XMLHttpRequest라는 자바스크립트 객체를 이용해서 서버와 비동기 통신을 하고 결과를 DOM이 변경되었을 경우 페이지에 반영하는 기술입니다.
Ajax가 등장하기 전에는 동기 통신 방식이 주를 이루었습니다. 동기 통신은 다음과 같은 순서로 진행되었습니다.
동기 통신방식은 요청을 보내고 응답을 받는 시간동안 사용자가 다른 동작을 수행하지 못하고 통신이 완료될 때까지 기다려야 했습니다. 또, 응답을 HTML 문서로 받아 해독하고 반영할 때 새로고침하느라 화면이 깜빡이게 되는데, 이것은 사용자 경험을 저하시키기도 했습니다. 또한 HTML 문서전체를 요청하고 응답으로 받음으로써 시간이 상대적으로 오래걸리기도 한다는 단점이 있었습니다.
Ajax는 웹 페이지에 비동기 통신을 쉽게 구현할 수 있도록 해주었습니다. Ajax의 비동기 통신은 다음과 같이 진행됩니다.
JS + XMLHttpRequest 객체를 통해 서버에 요청을 보냅니다.비동기 통신은 데이터의 처리만 서버에서 수행하고, UI는 클라이언트에서 처리합니다. 따라서 서버의 트래픽이 줄어서 동기 통신보다 빠른 속도를 낼 수 있습니다. 그리고 응답을 기다리는 동안 사용자가 UI에 대해서 조작을 계속해서 할 수도 있습니다.
또한, 비동기 통신은 HTML 전체 응답이 아닌 변경된 부분에 대해서만 정보 갱신을 처리하므로 빠른 속도를 보장하고 전체 화면 깜빡임 현상도 제거할 수 있습니다.
Ajax의 장점은 다음과 같습니다.
Ajax의 단점은 다음과 같습니다.