프로젝트 내 다양한 API 데이터 특성에 맞추어 staleTime과 gcTime을 세분화하여 관리하고 있습니다. src/lib/react-query/config.ts 의 상수를 기반으로 각 페이지 화면(훅)별 적용 사례와 그 이유를 정리했습니다.
useProduct), 서비스 약관 내용(useTerms)staleTime: 30분 ~ Infinity / gcTime: 1시간Infinity나 30분 등 긴 staleTime을 부여하여 탭 전환이나 뒤로 가기 시 발생하는 불필요한 네트워크 요청(Refetch)을 완벽히 차단합니다. 또한 긴 gcTime을 두어 가비지 콜렉터가 메모리에서 캐시를 너무 일찍 비우는 것을 방지, 히트율을 높입니다.useDeliveryAddress), 약관 동의 여부(useTermsAgreement)staleTime: 5분 / gcTime: 5분 (기본값)staleTime을 부여하여, 단기간 내 화면 간 이동에서 중복 호출을 막습니다.useDeliveryFee)staleTime: 10분 / gcTime: 30분staleTime을 설계하여 최적화했습니다.useOrders), 일반 주문 상세(useOrder)staleTime: 1분 (서버 컴포넌트 프리패치 기본값과 동일 세팅)staleTime을 주면 브라우저를 다시 띄웠을 때 과거 상태를 관측하는 버그가 생길 수 있습니다. 따라서 1분의 짧은 제한을 주어, 항상 어느 정도의 최신 동기화 상태를 유지합니다.useOrder의 pollUntilPaid 옵션)