Resolved
Written on
·
26
0
안녕하세요, 해당과같이 Dynamic page에서는 full route cache가 사용되지 않는다고 설명해주셨습니다.
이때, 첫번째 요청에서는 리퀘스트 메모이제이션과 데이터캐시가 당연히 아무것도 없기때문에 백엔드 서버에서 받아온 응답을 데이터캐시에 저장, 그리고 같은 내용을 중복방지를 위해 리퀘스트 메모이제이션에 캐싱하는거까진 알겠습니다.
그런데 두번쨰 요청에서는 같은 요청인데 리퀘스트 메모이제이션에서 MISS가 아닌 HIT을 해야하지 않나요? 왜 같은 요청인데 리퀘스트 메모이제이션은 MISS가 되고 데이터캐시에서 HIT을 하게되고 또다시 리퀘스트 메모이제이션에 SET을 하게 되는걸까요?
Answer 2
1
안녕하세요 Kurt님 이정환입니다.
리퀘스트 메모이제이션은 페이지를 생성하는 동안에만 유효하기 때문입니다.
이 내용은 우리 강의의 4.3) 리퀘스트 메모이제이션 챕터의 3분 40초에 아래 슬라이드로 설명드렸었는데요
리퀘스트 메모이제이션의 목적은 하나의 페이지를 렌더링 하는 동안에 (즉 한번의 요청을 처리하는 동안에) 중복된 API 요청을 방지하기 위해 존재합니다. 따라서 브라우저의 접속 요청에 페이지 생성을 완료하게 되면 리퀘스트 메모이제이션에 저장된 모든 캐시는 다 소멸됩니다. 그리고 이것이 바로 데이터 캐시와 리퀘스트 메모이제이션의 차이점입니다.
0
안녕하세요, 인프런 AI 인턴입니다. kurt님.
Next.js에서의 캐싱 동작에 대한 질문을 해주셔서 감사합니다. 질문해주신 부분은 리퀘스트 메모이제이션과 데이터 캐시의 상호작용에서 발생하는 혼란에 대한 것입니다.
리퀘스트 메모이제이션(request memoization)와 데이터 캐시(data cache)는 서로 다른 목적을 가지고 있습니다:
리퀘스트 메모이제이션: 동일한 입력에 대해 함수 호출 결과를 저장하여 불필요한 연산을 피합니다. 이것은 주로 서버나 클라이언트에서의 연산 비용을 줄이기 위한 것입니다.
데이터 캐시: 데이터 자체를 캐싱하여 네트워크 요청을 줄이고 성능을 향상시킵니다. 이는 주로 클라이언트 측에서 데이터 페칭을 최적화하는 데 사용됩니다.
두 번째 요청 시에, 리퀘스트 메모이제이션이 MISS가 되는 이유는 다음과 같습니다:
리퀘스트 메모이제이션의 캐시는 짧은 시간 내에 반복적으로 호출되는 동일 요청에 대한 캐시입니다. 시스템에 따라 캐시 정책이 다르기 때문에, 요청 반복 주기나 각각의 캐시 지속 시간에 따라 MISS가 발생할 수 있습니다.
또한, 메모이제이션 설정에 따라, 요청의 특정 조건이나 입력이 미세하게 달라지면 새로운 요청으로 인식하여 MISS가 날 수 있습니다.
이와 더불어 데이터 캐시에서의 HIT 발생은:
이러한 동작은 시스템 최적화를 위한 설계이며, 캐시의 사용 목적과 설정에 따라 달라질 수 있다는 점을 이해하시면 좋겠습니다.
관련 자료로 유사한 질문과 답변을 참고하시기 바랍니다:
- SSR 및 ISR 이해하기: SSR과 ISR을 활용한 페이지 생성을 이해하는 데 도움이 되는 기존 설명입니다.
- Next.js의 캐싱 전략: 다양한 캐싱 전략에 대해 다루고 있는 포스트입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아아 안그래도 방금 찾아서 수정내용올리고있었는데 하하.. 감사합니다 헷갈렸네요. 빠른답변 항상 감사드립니다.