MPA 란 SPA와 대조적인 용어로 여러 개의 페이지로 이루어진 어플리케이션을 뜻한다. MPA는 Server Side Rendering 방식으로 뷰를 만든다. 새로운 페이지를 요청할 때마다 서버에서 렌더링된 자원(HTML, CSS, javscript)을 모두 받는다. 따라서, 페이지 이동/갱신이 있을 때마다 전체 페이지를 다시 렌더링한다.
SPA 란 한 개의 페이지로 이루어진 어플리케이션을 말한다. Vue와 React는 대표적인 SPA 프레임워크로 Client Side Rendering 방식으로 화면을 구성한다. 최초에 HTML, CSS, javscript을 받고, 사용자의 동작에 따라 부분 요소를 다시 렌더링한다. (깜빡거리지 않고, 해당 부분만 변화한다.)
서버 쪽에서 렌더링한 후, 그 결과를 클라이언트에 전달하는 방식이다. 아래와 같은 단계로 진행된다.
- 사용자가 웹 사이트에 요청을 보낸다.
- 서버는 즉시 렌더링이 가능한 HTML 파일을 만든다.
(여기서 즉시 렌더링이 가능한 HTM이란, HTML 파일 내 데이터가 채워진 상태를 말한다.)- 클라이언트는 서버로부터 HTML을 받아, 즉시 렌더링한다. 이 단계에선 javascript를 받기 전 상태라 조작은 불가능하다. 화면을 볼 수만 있다.
- 클라이언트는 javascript를 다운 받는다. 이 때, 사용자의 조작을 기억한다. (동작은 하지 않음!)
- 클라이언트는 javascript를 실행하고, 웹 페이지는 상호작용이 가능해진다.
클라이언트에서 렌더링하는 방식이다. 아래 단계로 진행된다.
- 사용자가 웹 사이트에 요청을 보낸다.
- CDN이 HTML과 javascript를 클라이언트로 보낸다.
- 클라이언트는 HTML과 javascript를 받고, 실행한다. 이 때, data 호출 API가 있다면 서버로부터 응답을 기다리고, 해당 영역은 placeholder로 대체한다. 이 단계부터 사용자는 data를 제외한 부분적인 화면을 볼 수 있고, 상호작용할 수 있다.
- 서버로부터 응답이 오면 그 결과를 바탕으로 placeholder를 대체한다. 이제 웹 페이지는 정상적인 상호작용이 가능해진다.