F-Lab
🚀
상위권 IT회사 합격 이력서 무료로 모아보기

React Query에서 Stale Time과 GC Time의 차이와 활용법

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

AI가 제공하는 얕고 넓은 지식을 위한 짤막한 글입니다!



React Query의 Stale Time과 GC Time 개념 이해

React Query는 비동기 데이터 관리를 효율적으로 처리할 수 있는 라이브러리로, 특히 캐싱과 관련된 다양한 옵션을 제공합니다. 그 중에서도 Stale Time과 GC Time은 데이터의 유효성과 메모리 관리를 결정하는 중요한 요소입니다.

Stale Time은 데이터가 '신선'하다고 간주되는 시간을 의미합니다. 이 시간 동안에는 캐시된 데이터를 그대로 사용하며, 네트워크 요청을 하지 않습니다. 반면 GC Time은 캐시된 데이터가 메모리에서 제거되기까지의 시간을 나타냅니다.

왜냐하면 Stale Time은 데이터의 유효성을 판단하는 기준이고, GC Time은 메모리 관리와 관련된 기준이기 때문입니다. 이 두 개념은 서로 다른 목적을 가지고 있으며, 적절히 설정하면 애플리케이션의 성능을 크게 향상시킬 수 있습니다.

이 글에서는 Stale Time과 GC Time의 차이점과 활용법을 구체적으로 살펴보고, 이를 실제 프로젝트에서 어떻게 적용할 수 있는지에 대해 논의합니다.

React Query를 처음 사용하는 개발자라면 이 두 개념을 명확히 이해하는 것이 중요합니다. 이를 통해 데이터 관리와 성능 최적화를 동시에 달성할 수 있습니다.



Stale Time의 역할과 설정 방법

Stale Time은 데이터가 '신선'하다고 간주되는 시간을 설정하는 옵션입니다. 기본적으로 Stale Time이 설정된 데이터는 해당 시간 동안 네트워크 요청 없이 캐시된 데이터를 사용합니다.

예를 들어, Stale Time을 10초로 설정하면, 데이터가 요청된 후 10초 동안은 캐시된 데이터를 사용하고, 이후에는 새로운 네트워크 요청을 통해 데이터를 갱신합니다.

왜냐하면 Stale Time은 데이터의 유효성을 판단하는 기준으로 작용하기 때문입니다. 이를 통해 불필요한 네트워크 요청을 줄이고, 애플리케이션의 성능을 최적화할 수 있습니다.

Stale Time을 설정하는 방법은 간단합니다. React Query의 useQuery 훅에서 staleTime 옵션을 사용하면 됩니다. 아래는 예제 코드입니다:

const { data } = useQuery('key', fetchData, {
    staleTime: 10000 // 10초
});

이 설정을 통해 데이터가 일정 시간 동안 신선하게 유지되며, 사용자 경험을 향상시킬 수 있습니다.



GC Time의 역할과 설정 방법

GC Time은 캐시된 데이터가 메모리에서 제거되기까지의 시간을 설정하는 옵션입니다. 이는 메모리 관리와 관련이 깊으며, 애플리케이션의 메모리 사용량을 최적화하는 데 중요한 역할을 합니다.

예를 들어, GC Time을 5분으로 설정하면, 데이터가 사용되지 않은 상태로 5분이 지나면 메모리에서 제거됩니다. 이는 메모리 누수를 방지하고, 애플리케이션의 안정성을 높이는 데 기여합니다.

왜냐하면 GC Time은 데이터가 메모리에서 얼마나 오래 유지될지를 결정하는 기준이기 때문입니다. 이를 통해 메모리 사용량을 효율적으로 관리할 수 있습니다.

GC Time을 설정하는 방법은 React Query의 cacheTime 옵션을 사용하면 됩니다. 아래는 예제 코드입니다:

const { data } = useQuery('key', fetchData, {
    cacheTime: 300000 // 5분
});

이 설정을 통해 메모리 사용량을 최적화하고, 애플리케이션의 성능을 유지할 수 있습니다.



Stale Time과 GC Time의 상호작용

Stale Time과 GC Time은 서로 다른 목적을 가지고 있지만, 함께 사용될 때 더욱 효과적입니다. Stale Time은 데이터의 유효성을 판단하고, GC Time은 메모리 관리를 담당합니다.

예를 들어, Stale Time을 24시간으로 설정하고, GC Time을 10분으로 설정하면, 데이터는 24시간 동안 신선하게 유지되지만, 사용되지 않은 데이터는 10분 후에 메모리에서 제거됩니다.

왜냐하면 Stale Time과 GC Time은 각각 데이터의 유효성과 메모리 관리를 담당하며, 이 두 가지를 적절히 조합하면 애플리케이션의 성능과 안정성을 동시에 확보할 수 있기 때문입니다.

아래는 Stale Time과 GC Time을 함께 설정하는 예제입니다:

const { data } = useQuery('key', fetchData, {
    staleTime: 86400000, // 24시간
    cacheTime: 600000   // 10분
});

이 설정을 통해 데이터의 유효성과 메모리 관리를 동시에 최적화할 수 있습니다.



실제 프로젝트에서의 활용 사례

Stale Time과 GC Time은 실제 프로젝트에서 다양한 방식으로 활용될 수 있습니다. 예를 들어, 고정 데이터의 경우 Stale Time을 길게 설정하고, 자주 변경되는 데이터의 경우 짧게 설정할 수 있습니다.

왜냐하면 고정 데이터는 자주 갱신할 필요가 없고, 자주 변경되는 데이터는 신속히 갱신해야 하기 때문입니다. 이를 통해 애플리케이션의 성능과 사용자 경험을 동시에 향상시킬 수 있습니다.

또한, GC Time을 적절히 설정하면 메모리 사용량을 효율적으로 관리할 수 있습니다. 예를 들어, 사용자가 자주 방문하지 않는 페이지의 데이터는 짧은 GC Time을 설정하여 메모리에서 빠르게 제거할 수 있습니다.

아래는 실제 프로젝트에서 Stale Time과 GC Time을 설정하는 예제입니다:

const { data } = useQuery('key', fetchData, {
    staleTime: 3600000, // 1시간
    cacheTime: 300000  // 5분
});

이 설정을 통해 데이터 관리와 메모리 관리를 동시에 최적화할 수 있습니다.



결론: Stale Time과 GC Time의 중요성

React Query의 Stale Time과 GC Time은 데이터 관리와 메모리 관리를 최적화하는 데 중요한 역할을 합니다. 이 두 옵션을 적절히 설정하면 애플리케이션의 성능과 안정성을 크게 향상시킬 수 있습니다.

왜냐하면 Stale Time은 데이터의 유효성을 판단하고, GC Time은 메모리 관리를 담당하기 때문입니다. 이를 통해 불필요한 네트워크 요청을 줄이고, 메모리 사용량을 효율적으로 관리할 수 있습니다.

이 글에서 소개한 내용을 바탕으로 Stale Time과 GC Time을 적절히 설정하여 애플리케이션의 성능을 최적화해 보세요. 이를 통해 사용자 경험을 향상시키고, 안정적인 애플리케이션을 구축할 수 있습니다.

React Query를 처음 사용하는 개발자라면 이 두 개념을 명확히 이해하고, 실제 프로젝트에 적용해 보세요. 이를 통해 데이터 관리와 성능 최적화를 동시에 달성할 수 있습니다.

React Query의 다양한 옵션을 활용하여 더욱 효율적이고 안정적인 애플리케이션을 개발해 보세요.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수
logo
copyright © F-Lab & Company 2025