ssr(server Side Rendering)
서버쪽에서 렌더링을 마치고 클라이언트에게 전달하는 방식
csr(Client Side Rendering)
클라이언트쪽에서 렌더링이 일어나는 방식
렌더링 : 브라우저가 서버의 요청에 의해 받은 내용이 브라우저에 출력되는 과정


웹페이지 로딩 시간
-ssr이 서버 사이드에서 컴파일 되어 넘어오기 때문에 크롤러에 대응에 더 유리
자원사용 : 페이지 이동 시마다 서버에 요청을 보내기 때문에 ssr이 서버 자원을 더 많이 사용함
ssg : 빌드 타임에서 페이지 생성, 캐싱 서버에 html을 두어 유저에게 넘겨주는 방식
이미지 : 웹페이지 용량의 많은 부분 차지. 50% 이상. 적절한 이미지를 사용하는 것은 웹페이지 크기를 줄여주고 빠른 웹 로딩속도를 만듦
적절한 이미지 크기를 사용

최적화된 이미지 포맷을 이용
Image cdn

이미지 최적화 및 변환을 중점으로 하는 서버
lazy loading
그 외
폰트
- 한글 폰트 파일의 글자 수는 총 11173개
- 각 폰트 굵기마다 다른 파일을 사용해야 함
- 많이 사용하는 지마켓산스 폰트의 경우 파일 하나 당 약 2.5Mb
2-2. 폰트 최적화
1. 최적화된 파일 형식 사용 (woff, woff2 등)

2. subset 파일 사용
a. 사용하는 글자만 모아둔 파일
b. 한글은 약 2600자
c. 갊 과 같은 글자는 빠짐
3. 특정 페이지에서만 사용되는 폰트는 그 페이지에서만 로드한다. 글로벌로 사용하면 불필요하기 때문임.
Code splitting

유저 및 설정 페이지 등 자주 안보는 페이지는 레이지로 설정한다면 초기 접속시간을 줄일 수 있다.
-> 단 꼭 필요한 부분만 다이나믹?하게 파일을 불러오는 방식을 사용할 것
라이브러리 관리
라이브러리도 하나의 파일이기 때문에 효율적으로 관리해야 함

동작을 빠르게
DOM?
브라우저는 화면을 그리기 위해 DOM 이라는 개념을 사용
DOM이란 화면을 그리기 위해 필요한 정보를 트리형태로 저장한 데이터
리액트는 버츄얼돔을 사용함으로써 내부 변경 사항을 파악하고 반영하는 방식을 사용

Reflow, repaint


- Reflow : 레이아웃 수치(width, height, location 등)이 변경 시 영향을 받은 모든 노드를 계산하여 렌더 트리를 재생성하는 과정. 스타일 변경 외에도 element의 속성과 메서드를 사용해도 발생할 수 있다. 만약 reflow가 발생했다면 그 후에 repaint가 발생한다.
- Repaint : 스타일 변경(background-color, visibility, outline 등) 시 발생하는 과정. repaint가 발생 이후에 reflow는 발생하지 않는다.
2-2. Reflow, repaint를 개선시키는 방법
1. DOM 구조 최하단 노드에서 작동하도록 코드를 작성
2. 애니메이션이 들어간 항목을 absolute와 fixed에 사용 : 주변 레이아웃에 영향을 안주므로 영향 범위를 줄일 수 있음. 좀 더 빠른 성능개선
3. transform을 이용 : 크기를 변경시키는 경우 transform 이용. 이 속성은 reflow, repaint가 일어나지 않아 성능변화를 줌
4. JS를 통해 스타일 변화를 주어야 할 경우, 가급적 한번에 처리

밑에처럼 한번에 넣으면 3번 쓰는 것보다 더 좋다.





