React-Query: staleTime против cacheTime

Если вы когда-либо работали с react-query, вы, вероятно, пытались понять разницу между staleTime и cacheTime и, что более важно, почему ваше приложение продолжает делать вызовы сервера, даже если вы измените их значения.

Я постараюсь объяснить как можно короче, чтобы вы могли вернуться к работе.


Исходное состояние

Ваше приложение еще не делало никаких обращений к серверу, в этом случае при вызове hook оно просто получит данные с сервера и сохранит их в кэше.

Теперь, что произойдет, если hook уже был вызван хотя бы один раз, и я попытаюсь вызвать его снова? Это зависит от следующих ситуаций.


Ситуация 1

staleTime = 0
cacheTime = 5 min
Войдите в полноэкранный режим Выход из полноэкранного режима

Поскольку ваш кэш установлен на 5 минут, react-запрос вернет данные быстро, однако в этой первой ситуации, поскольку staleTime равен 0, данные всегда будут устаревшими, поэтому react-query отвечает за выполнение фонового запроса к серверу и обновление данных запроса, когда это возможно.


Ситуация 2

staleTime = 5 min
cacheTime = 5 min
Войдите в полноэкранный режим Выход из полноэкранного режима

Аналогично первой ситуации, react-query будет
оперативно возвращает данные, однако на этот раз staleTime отличается от 0, поэтому react-query не будет делать никаких фоновых вызовов, в конце концов, ваши данные не устарели

Помните, что упомянутый здесь кэш находится только в памяти браузера, если пользователь перезагрузит страницу, кэш будет очищен, возвращаясь к исходной ситуации.


В обеих ситуациях я считал время между первым и вторым вызовом hook менее пяти минут, поскольку в обоих случаях, когда время между вызовами составляет более пяти минут, react-query не использует кэш.

Я надеюсь, что это краткое объяснение смогло ответить на ваши вопросы по теме

Оцените статью
devanswers.ru
Добавить комментарий