개발자

React lazy에 대해 질문드려요

2024년 02월 03일조회 211

안녕하세요 프론트엔드를 공부하고 있는 초보 개발자입니다 제 사이드 프로젝트 App.js에는 총 13개의 페이지를 Routes안에서 처리해주고 있습니다 리엑트 공식문서를 보고 따라해봤는데 콘솔 네트워크 탭에서 봐도 초기 로딩속도는 약 2.2~2.6초 였습니다. 이걸 전부 lazy로 바꾸니 확실히 1.3~1.47초가 나오더라구요 여기서 궁금한 점이 있습니다 1. 초기 로딩 속도를 줄이긴했는데 더 많은걸 request하고 있더라구요 lazy 전에는 네트워크 요청 쿼리랑 이미지 리소스가 떴다고 하면 lazy 후에는 뭔가 그 패키지들의 이름이 쫘르륵 나오면서 17개 였던게 27개가 됐어요 근데 속도는 더 잘나와요 이게 맞는건가요 ? 2 . 메인페이지에서 굳이 상세 페이지나 다른 페이지를 초기에 받아오지않아서 초기 로딩 속도를 줄여주는건 알았는데 반대로 사용자가 다른 페이지에 갈때마다 그 페이지를 다시 받아와야하는걸로 알고 있습니다 그 부분은 로딩 스피너로 구현을 해놨는데 프로젝트 규모에 따라서 lazy를 해주고 안해주고의 차이인가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

인기 답변

조용구님의 프로필 사진

안녕하세요 :) 1번 페이지 자체를 lazy 처리하면 리소스는 요청하지 않아서 갯수는 줄어야 하는데, 요청 갯수가 늘어난 이유는 모르겠어요. 하지만 요청 갯수가 늘어나도 각 파일의 용량이 줄어들면 속도가 빨라질 수 있습니다. 브라우저에서 리소스를 10개 정도 동시 요청하는데, 원인이 이 부분일 가능성 있습니다. 2번 SPA로 동작하게 될거라 해당 페이지에서 필요한 리소스만 요청하게 될거예요. 그래서 로딩 처리를 하지 않아도 충분히 빠르게 읽어올거예요. 페이지 자체가 해비하면 페이지 초기 렌더링 후 필요한 부분만 로딩 처리하곤 합니다.

포크코딩님의 프로필 사진

1. lazy loading 구현 방식에 따라 차이가 있습니다. 속도냐 비용이냐 기준이 무엇인지 모르겠어서 '이게 맞느냐'라는 질문에 답변 드리기 어렵습니다. 2. 해당 기술은 보통 사용자 경험이랑 관련이 있다고 생각합니다. 프로젝트 규모 같은 요소는 상관없습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 02월 03일

안녕하세요, 질문에 대한 답변드립니다. 1. React의 `React.lazy()` 함수를 사용하면 초기 로딩속도가 빨라지고 코드 스플리팅을 할 수 있으며 따라서 앱의 퍼포먼스가 개선되게 됩니다. 하지만 이는 추가적인 네트워크 요청을 의미하기도 합니다. 이를테면, 각 페이지(혹은 컴포넌트)가 필요할 때마다 해당 페이지(혹은 컴포넌트)를 위한 별도의 네트워크 요청이 발생하게 됩니다. 그렇기 때문에 네트워크 요청의 개수가 늘어난 것이 맞습니다. 유저가 처음 앱에 접근할 때 필요한 코드만 로드하고 나머지는 다른 시점에서 로드하는 전략으로 초기 로딩 속도를 줄일 수 있는 건 맞습니다. 2. 여기서 귀하께서 지적한 내용은 매우 중요한 관찰입니다. `React.lazy()`을 사용함으로써 초기 앱의 부담을 크게 줄일 수 있지만, 반대로 각 페이지나 컴포넌트에 대한 로딩 시간이 늘어나게 됩니다. 이러한 방식은 사용자 경험(UX)에 영향을 미칠 수 있습니다. 로딩 스피너를 통해 이를 다소 완화할 순 있지만, 결국엔 앱의 규모와 특성 그리고 유저의 사용 패턴 등 복합적인 요소들을 고려하여 코드 스플리팅 전략을 정해야 합니다. 일반적으로, 대규모 프로젝트에서는 초기 로딩 시간을 줄이고 퍼포먼스를 개선하기 위해 `React.lazy()` 같은 코드 스플리팅 기법을 활용하며, 페이지나 컴포넌트가 크거나 복잡한 경우에도 잦은 렌더링으로 인한 불필요한 리소스 낭비를 최소화하기 위해서 사용합니다. 하지만 프로젝트의 규모가 작아질수록 `React.lazy()`의 이점이 적어질 수 있으며 이럴 때는 반드시 사용해야 하는 것은 아닙니다. 기억하셔야 할 점은 이러한 방식으로 성능 개선이 가능하다는 것, 그리고 언제 어떻게 사용해야 할지에 대한 판단은 여러분의 몫이라는 점입니다!

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!