Вопрос проверяет понимание стратегии кэширования Stale-While-Revalidate и её реализации в библиотеке React Query для управления состоянием серверных данных.
Stale-While-Revalidate (SWR) — это стратегия кэширования, которая позволяет балансировать между скоростью отклика и актуальностью данных. Основная идея заключается в том, что при запросе данных сначала возвращается кэшированная (возможно, устаревшая) версия, а затем в фоновом режиме выполняется запрос на сервер для получения свежих данных. Это обеспечивает мгновенный отклик для пользователя и постепенное обновление информации.
React Query (теперь TanStack Query) использует эту стратегию по умолчанию. Ключевые параметры конфигурации:
Когда компонент запрашивает данные, React Query проверяет кэш:
import { useQuery } from '@tanstack/react-query';
function UserProfile({ userId }) {
const { data, isLoading, isStale } = useQuery({
queryKey: ['user', userId],
queryFn: () => fetch(`/api/users/${userId}`).then(res => res.json()),
staleTime: 5 * 60 * 1000, // 5 минут данные считаются свежими
cacheTime: 10 * 60 * 1000, // 10 минут хранятся в кэше
});
if (isLoading) return <div>Loading...</div>;
return <div>{data.name} {isStale ? '(updating...)' : ''}</div>;
}Stale-While-Revalidate в React Query позволяет создавать быстрые и отзывчивые интерфейсы, минимизируя задержки для пользователя. Эта стратегия особенно полезна для приложений, где важна скорость отклика, а данные могут быть немного устаревшими (например, лента новостей или список товаров).
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию