[React]UX, 최적화

이진희·2022년 4월 7일
1

최적화

목록 보기
1/1

UX

사용자가

  • 사용하기 익숙한 형태로,
  • 로딩 지연시간이 최대한 짧게,
  • 사용하기에 불편함이 없도록(응답이 안됨. 알림 메시지가 안떠서 진행상황 전혀 알 수 없음, 취소 버튼 없음...),
  • 더불어 사용하기 편하도록(입력 마쳤을 때 자동으로 다음 입력란으로 포커싱 혹은 페이지 넘김, 한 눈에 파악하기 편한 UI ...)

서비스를 지원해야 한다.

코드를 가볍게

  • 코드를 가볍게 하기 위해선 역시 코드양을 줄이는 게 최고다!
    - 그렇다고해서 코드를 너무 압축해서 다른 사람이 코드를 알아보지 못한다면 안된다.
  • 안쓰는 CSS 정리는 꼭 해주자
  • 번들링할 때 minimize해주자

코드 스플리팅

  • 코드 스플리팅 => 하나의 파일로 번들링x 특정 기준에 따라 몇 개로 나눠서 파일을 번들링,실제로 사용될 때 쪼갠 것을 로딩하도록 해서 초기 로딩 시간이 너무 길어지지 않도록 함.
  • 코드가 하나의 js파일로 번들링이 되어 있으면 초기 로딩시간이 길어지므로 당연히 좋지않음.
  • 방법1) React.Lazy 사용(SSR에도 곧 도입된다고 문서에 적혀있음)
  • 방법2) 동적 import 사용
  • 방법3) webpack을 이용한 코드 스플리팅
  • 코드 스플리팅 가장 간단한 기준 => 페이지 별로 나누기

SEO(Search Engine Optimization)

  • 구글 서치봇 => 웹 페이지를 크롤링해서 검색할 때 사용함. 그러면 웹 사이트가 검색엔진의 상단에 뜨게하기 위해서는 봇이 크롤링을 잘 해갈 수 있도록 해주어야 함
  • 메타 데이터, 타이틀을 페이지별로 잘 뜨게 해주자. - React의 경우 React Helmet을 이용해 각 페이지 별로

SSR(ServerSide Rendering)

  • SPA의 경우 SEO 최적화가 힘듦. 그럼 페이지를 만들어서 응답하는 서버사이드렌더링을 사용해 meta, title,...을 페이지별로 잘 작성해서 크롤링이 잘 되도록 도와주면 좋겠다.
  • React만으로도 SSR은 가능하지만, 사용하기 불편.
  • SSR 프레임워크인 Next.js를 사용해보자
  • Next.js의 특징
    - 직관적인 페이지 기반의 라우팅 시스템(+다이나믹 라우트 제공)
    - 프리렌더링이 지원됨.
    - 자동적으로 코드 스플리팅(페이지 뼐로 코드스플리팅. 더 빠른 페이지 로딩 지원)
    - Built-in CSS, Sass , CSS-in-JS 지원
    - 서버리스 기능으로 API 엔드포인트를 구축하는 API 라우팅

캐싱

  • 수많은 요청과 응답.
  • 모든 요청에 일일히 응답을 해주면 사용자 수가 적을 땐 괜찮을 수 있어도 사용자 수가 일정 수준 이상으로 많아지면 응답이 많이 지연될 수 있다.(모든 요청을 일일히 처리하고 응답해주어야 하기 때문에 처리하는데 시간이 많이 걸려 응답시간이 지연된다.)
  • 사용자가 자주 요청하는 것은 캐싱해놓고 같은 요청일 경우 캐시에 저장된 내용을 반환해준다.(서버로는 요청x) 그러면 서버로 향하는 요청 수가 적어져 응답 할 거리도 적어지니 응답시간 지연률이 적어짐.
  • http통신을 할 경우 GET 요청은 기본적으로 캐시를 사용한다.
profile
슬로우 스타터

0개의 댓글