inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Khám phá Next.js: Từ "nhà phát triển biết dùng" thành "nhà phát triển hiểu rõ bản chất"

Tại sao phải thực hiện Data fetching trên server?

next Request Memoization과 react cache

80

dogmnil20074517

15 câu hỏi đã được viết

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

Câu trả lời 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

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

디스코드 소통창구는 없어졌나요 ??

0

6

1

cd 명령어가 안들어요

0

6

1

클로드 데스크앱과의 차이

0

7

1

nmp run build의 기능

0

3

1

plan mode 개발 계획안 확인 불가

0

11

2

20번강좌에 대한 질문입니다.

0

5

1

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

1

70

1

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

0

82

2

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

1

245

2

PPR을 보고 오라고 하시는데

1

82

2

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

0

59

1

강의에 언급된 영상 질문

0

70

2

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

0

197

2

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

0

88

2

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

0

82

1

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

1

89

1

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

0

84

2

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

0

91

1

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

0

149

2

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

0

112

2

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

0

236

1

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

0

105

2

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

0

109

2

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

0

209

1