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