본문 바로가기

개념/기초지식

[HTTP/네트워크] AJAX와 AJAX의 장단점

바뀌는 부분만 슥-지우고 짜잔

💡 AJAX란?

 

AJAX(Asynchronous JavaScript And XMLHttpRequest)은 JavaScript, DOM, Fetch, XMLHttpRequest, HTML 등의 다양한 기술을 사용하는 웹 개발 기법을 말한다.

👀 AJAX의 특징

 

AJAX는 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 받아와 화면에 그려낼 수 있다

 

예시)

검색어를 입력할 때마다 뜨는 추천 검색어

스크롤이 끝나면 데이터를 가져와서 업데이트하고 랜더링하는 무한스크롤

페이스북 메시지

네이버 포털사이트의 뉴스 탭


📌 AJAX의 두가지 핵심 기술: JavaScript,DOM & Fetch

ajax는 fetch와 dom이 결합된 형태라고 생각해도 된다고 한다.

Fetch -페이지를 이동하지 않아도 서버로부터 필요한 데이터를 받아올 수 있음
-사용자가 현재 페이지에서 작업을 하는 동안 서버와 통신할 수 있도록 함
- 브라우저는 Fetch가 서버에 요청을 보내고 응답을 받을 때까지 모든 동작을 멈추는 것이 아니라 계속해서 페이지를 사용할 수 있게 하는 비동기적인 방식을 사용
JavaScript와 DOM -JavaScript에서 DOM을 사용해 조작할 수 있기 때문에,
Fetch를 통해 전체 페이지가 아닌
필요한 데이터만 가져와 DOM에 적용시켜 새로운 페이지로 이동하지 않고 기존 페이지에서 필요한 부분만 변경할 수 있다.

📌 XHR VS Fetch

 

Fetch 이전에는 XHR(XMLHttpRequest)를 사용했다

Fetch는 XHR의 단점을 보완한 새로운 Web API이며, XML보다 가볍고 JavaScript와 호환되는 JSON을 사용한다.

따라서 오늘날에는 XHR보다 Fetch를 많이 사용한다.


🔍 AJAX의 장단점

장점 단점
서버에서 HTML을 완성하여 보내주지 않아도 웹페이지를 만들 수 있다.

(필요한 데이터를 비동기적으로 가져와 브라우저에서 화면의 일부만 업데이트하여 렌더링 할 수 있다)
Search Engine Optimization(SEO)에 불리

(처음 받는 HTML 파일에는 데이터를 채우기 위한 틀만 작성되어 있는 경우가 많아서 검색 사이트에서 사이트의 정보를 긁어가기 어렵다.)
표준화된 방법

(이전에는 브라우저마다 다른 방식으로 AJAX를 사용했으나, XHR이 표준화되면서부터 브라우저에 상관없이 AJAX를 사용할 수 있게 되었다)
뒤로가기 버튼 문제

(뒤로가기 등의 기능을 구현하기 위해서는 별도로 History API를 사용해야 한다)
유저 중심 애플리케이션 개발

(AJAX를 사용하면 필요한 일부분만 렌더링하기 때문에 빠르고 더 많은 상호작용이 가능한 애플리케이션을 만들 수 있다.)
 
더 작은 대역폭

(대역폭: 네트워크 통신 한 번에 보낼 수 있는 데이터의 크기)

(AJAX에서는 필요한 데이터를 텍스트 형태(JSON, XML 등)로 보내면 되기 때문에 비교적 데이터의 크기가 작다. )