DEV Community

Itelo Filho
Itelo Filho

Posted on

React-Query: staleTime vs cacheTime

Se você já trabalhou com react-query provavelmente já se deparou tentando entender a diferença entre o staleTime e o cacheTime e, mais importante, o porque sua aplicação continuar fazendo chamadas ao servidor mesmo você mudando os valores deles.

Vou tentar explicar da forma mais breve possível para você poder voltar a trabalhar.


Estado inicial

A sua aplicação ainda não fez nenhuma chamada ao servidor, neste caso, quando o hook for chamado, ele vai apenas buscar os dados no servidor e salvar no cache.

Agora, o que acontece quando o hook já tiver sido chamado ao menos uma vez e tento chamá-lo novamente? Bem, depende das seguintes situações.


Situação 1

staleTime = 0
cacheTime = 5 min
Enter fullscreen mode Exit fullscreen mode

Como o seu cache está configurado para 5 minutos, o react-query vai devolver os dados prontamente, entretanto, nesta primeira situação, como o staleTime é 0 os dados sempre serão obsoletos, portanto o react-query fica encarregado de fazer uma requisição em background para o servidor e atualizar os dados da query quando possível.

react query fazendo chamada em background


Situação 2

staleTime = 5 min
cacheTime = 5 min
Enter fullscreen mode Exit fullscreen mode

Semelhante à primeira situação, o react-query vai
devolver os dados prontamente, porém, dessa vez o staleTime difere de 0, logo o react-query não vai fazer nenhuma chamada em background, afinal o seu dado não está obsoleto

react query não fazendo chamada em background

Lembrando que, o cache mencionando aqui é apenas na memória do navegador, se o usuário recarregar a página o cache vai ser limpo, voltando para a situação inicial


Em ambas situações considerei o tempo entre a primeira e a segunda chamada do hook menor que cinco minutos, visto que em ambas, quando o tempo entre as chamadas é maior que cinco minutos, o react-query não utiliza o cache.

Espero que essa explicação rápida tenha conseguido sanar as suas dúvidas em relação ao assunto

Top comments (0)