inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 Next.js

5.5) 클라이언트 라우터 캐시

5.5 클라이언트 라우터 캐시 관련 질문입니다

해결된 질문

297

eko09

작성한 질문수 17

0

예를들면 헤더컴포넌트에서 실시간으로 현재 시간을 보여주고싶은 경우가 있다면 헤더 컴포넌트는 모든 페이지에서 보여지는 레이아웃이기때문에 클라이언트 라우터 캐시가 되어서 제가 새로고침을 하는게 아니라면 모든 페이지에서 시간이 멈춰있다는건데 해당 기능을 구현하기 위해서 클라이언트 라우터 캐시를 사용안할수는없나요?

react typescript next.js

답변 1

3

이정환 Winterlood

안녕하세요 이정환입니다.

해당 기능은 클라이언트 라우터 캐시를 사용하지 않는 방법 보다는 다음 방법으로 해결하는게 더 깔끔하지 않을까 싶어요!

먼저 다음과 같은 Timer 컴포넌트를 만듭니다.

"use client";

import { useEffect, useState } from "react";

export default function Timer() {
  const [time, setTime] = useState(new Date());

  useEffect(() => {
    const intervalId = setInterval(() => {
      setTime(new Date());
    }, 1000);

    return () => clearInterval(intervalId);
  }, []);

  return <div>{time.toLocaleString()}</div>;
}

그리고 이 컴포넌트를 레이아웃 컴포넌트의 자식 컴포넌트로 배치합니다.

이렇게 되면 클라이언트 라우터 캐시의 유무를 떠나서 클라이언트 측에서 자체적으로 타이머를 통해 시간을 계속해 업데이트하기 때문에 원하시는 목적을 달성하실 수 있을 것으로 보입니다.

 

추가로 클라이언트 라우터 캐시를 해제하시려면 next.config.mjs 파일에서 다음과 같이 라우터 캐시의 StaleTime(상하는 시간, 유통기한)을 0초로 설정해주시면 됩니다. (다이나믹, 스태틱 페이지 모두 0초로 설정)

/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    staleTimes: {
      dynamic: 0,
      static: 0,
    },
  },
}
 
module.exports = nextConfig

다만 이렇게 설정할 경우 모든 라우터 캐시가 해제되는 결과를 초래하므로 조심해서 사용하셔야 한다는 점 까지 말씀드릴 수 있겠습니다.

추가로 관련 공식문서도 첨부해드립니다.

https://nextjs.org/docs/app/api-reference/next-config-js/staleTimes

풀라우트캐시 동작 원리에서 데이터 캐시 관련 질문

0

53

2

next.js 프로젝트

0

50

1

Next.js + Tanstack Query BFF 구조 질문

0

47

2

Next.js 사전렌더링 이해하기 부분

0

52

2

모달 관련 질문

0

56

3

렌더링 관련 질문

0

92

2

중복으로 하나의 api를 요청할 때 캐싱 옵션 통일화

0

78

2

라우트 세그먼트 옵션 강좌 노트에 사소한 제보 남깁니다.

0

76

2

SSR시 context에 params말고 query를 사용하면 안되나요?

0

90

2

npx prisma db push 시 에러가 뜹니다.

0

107

3

vercel 배포를 실패하였습니다.

0

120

3

Image 컴포넌트 사용시 브라우저 콘솔에 경고는 왜 뜨는걸까요?

0

74

2

getServerSideProps 함수와 SSR의 관계

0

87

6

없는 페이지인데 풀라우트캐시로 저장이 되는 이유가 궁금합니다

0

70

2

실제 프로젝트에서 SSR 사용에 관해서 질문드립니다.

0

124

2

일반적인 nextjs project architecture에 대하여..

0

97

2

2.14 Search에서 작성한건 static이긴하지만 CSR이 아닌가요?

0

82

2

배포 시 오류 발생

0

97

2

백엔드 서버 오류납니다.

0

95

2

취약점 제거시 nestjs 버전 문제가 생길까요?

0

102

1

eslint.config.mjs 내 rules 어떻게 설정 하나요?

0

113

1

[book]/[id]/page.tsx 모달 띄울 때 성능 하락 현상은 ReviewList를 불러오면서 발생하는 문제 같습니다.

0

69

2

빨간줄 설정

0

88

2

익스텐션 질문

0

65

1