inflearn logo
강의

講義

知識共有

Next.jsの中身を覗く:「使える開発者」から「仕組みを理解して使う開発者」へ

なぜData fetchingをサーバーで行う必要があるのか?

next Request Memoization과 react cache

87

dogmnil20074517

投稿した質問数 15

0

next.js에서 제공하는 Request Memoization 기능은 같은 엔드포인트 경로로 여러 개의 요청이 들어왔을 때 하나의 요청으로 캐싱해주는걸로 알고있습니다. 이와 관련해서 3가지 궁금증이 있습니다.

 

  1. Request Memoization 기능은 같은 페이지 한정인가요. 아님 프로젝트 전역에 적용되는걸까요??

    예를 들어 /dashboard 와 /home 두 페이지 모두에서 getUserInfo 라는 fetch 함수를 호출한다면 이 경우도 Request Memoization 이 적용되는건가요.

  2. 만약 같은 엔드포인트지만 넘겨주는 파라미터가 다를 경우도 Request Memoization이 적용되나요?

  3. axios를 사용한다면 Request Memoization 기능을 활용할 수 없는걸로 알고있는데 react에서 제공하는 cache 함수를 사용하면 동일한 효과를 기대할 수 있나요?

 

 

감사합니다!!

react typescript next.js

回答 1

0

Boaz

안녕하세요. 먼저 깊이 있는 질문 주셔서 감사합니다.🤗

바로 답변 드릴게요.

  • 적용 범위
    Request Memoization은 한 번의 서버 요청(=한 번의 React 트리 렌더링) 동안만 유효합니다. 같은 트리(레이아웃·페이지·서버 컴포넌트들) 안에서 같은 fetch(동일 URL+옵션)를 여러 번 호출해도 1번만 나갑니다. 하지만 /dashboard/home처럼 서로 다른 페이지 요청은 각각 별도 요청이므로 서로 공유되지 않습니다. 또한 React 컴포넌트 트리 밖(예: Route Handler)에는 적용되지 않습니다. 참고 - Next.js

  • 파라미터가 다르면?
    아니요. 메모이제이션 키는 **URL + fetch 옵션(메서드/헤더/바디 등)**이 동일할 때만 일치합니다. 쿼리 스트링이나 헤더가 달라지면 다른 요청으로 간주되어 중복 제거되지 않습니다. 추가로 메모이제이션은 GET만 대상입니다. 참고 - Next.js

  • axios를 쓰면? 대안은 reactcache
    Next의 Request Memoization은 패치된 fetch에 붙는 최적화라서 axios에는 자동 적용되지 않습니다. 말씀하신대로 axios(또는 ORM/DB 클라이언트)를 써야 한다면, 해당 호출 함수를 reactcache로 감싸면 비슷하게 “한 요청 내 중복 호출”을 최적화할 수 있습니다 참고 - Next.js

0

dogmnil20074517

그렇군요. 정성스러운 답변 감사합니다!!

[문의] 섹션 7 미션 진행 중...

0

1

1

기본 브랜치의 이름이 master에요.

0

8

1

관리자 페이지 질문

0

8

1

plans 생성이 안됩니다.

0

12

2

더빙에 어떤 ai가 쓰였는지 궁금합니다.

0

12

0

보안 적용에 대한 강의가 있을까요?

0

6

1

template 동작 흐름에 대해서 질문 있습니다.

1

85

1

Link 컴포넌트는 그러면 웬만하면 무조건 쓰는편이 좋은가요?

0

105

2

middleware.ts가 proxy.ts로 변경되고 실행 시점도 바뀌었다네요

1

290

2

PPR을 보고 오라고 하시는데

1

97

2

useInfiniteQuery promise와 react use 사용시 페이지 무한 로딩

0

70

1

강의에 언급된 영상 질문

0

77

2

next.js 서버fetch 에러 fallback ui 구현 방법

0

213

2

필터옵션이 많은 페이지에서도 서버 fetch를 사용하는게 맞을까요??

0

100

2

서버 fetch suspense 로 감싸고 새로고침 시 잠시 빈 화면이 노출된 후 fallback ui가 노출됩니다.

0

86

1

template.tsx 에서 서버 fetch 후 클라이언트 컴포넌트로 넘겨주면 싱크가 맞는 이유

1

97

1

layout 컴포넌트 내 클라이언트 컴포넌트

0

96

2

게시판 리스트 작성할 때 use client를 어디서부터 붙여야할지 모르겠어요

0

97

1

'왜 Next.js 가 필요할까?(기술적인 등장 배경)' 에서 언급하는 영상들이 무엇일까요?

0

158

2

Parallel Route를 사용한 모달에 대해 질문이 있어요.

0

120

2

유튜브 영상과의 차이점 문의

0

246

1

template.tsx 가 SEO 에 주는 이점에 대한 질문

0

112

2

자동화 스크립트 관련하여 질문있습니다.

0

114

2

색션1 예제 코드 질문드립니다.

0

217

1