Проверяет понимание кэширования ответов API и обработки пустых результатов, чтобы избежать лишних сетевых запросов.
Когда фронтенд-приложение запрашивает данные с сервера, оно часто использует кэширование, чтобы не выполнять одинаковые запросы повторно. Вопрос возникает, когда сервер возвращает пустой массив — например, список заказов пользователя, которых пока нет. Многие разработчики ошибочно считают, что пустой ответ нужно игнорировать и запрашивать снова при каждом рендере. На самом деле пустой массив — это полноценный результат, который можно и нужно кэшировать.
Пустой массив означает, что на момент запроса данных нет. Это не ошибка и не признак того, что запрос не удался. Если вы будете повторять запрос каждый раз, вы создадите лишнюю нагрузку на сеть и сервер, а пользователь не получит никакой выгоды. Кэширование пустого ответа позволяет мгновенно отображать состояние «нет данных» при повторных посещениях страницы.
В современных приложениях часто используют библиотеки для управления состоянием, такие как React Query или Redux Toolkit Query. Они автоматически кэшируют ответы, включая пустые массивы. Пример с React Query:
import { useQuery } from '@tanstack/react-query';
function Orders() {
const { data } = useQuery({
queryKey: ['orders'],
queryFn: fetchOrders,
staleTime: 5 * 60 * 1000, // 5 минут
});
// data будет пустым массивом, но запрос не повторится до истечения staleTime
return <div>{data?.length === 0 ? 'Нет заказов' : data?.map(...)}</div>;
}Здесь staleTime определяет, как долго данные считаются свежими. Даже если data — пустой массив, повторный запрос не произойдет, пока не пройдет указанное время.
Кэширование не означает, что данные никогда не обновляются. Нужно настроить стратегию инвалидации: например, после мутации (добавления заказа) можно вызвать invalidateQueries, чтобы принудительно обновить список. Также можно использовать refetchOnWindowFocus или ручное обновление по действию пользователя.
Кэшируйте пустые ответы так же, как и заполненные. Это снижает нагрузку на сервер и ускоряет интерфейс. Главное — правильно настроить время жизни кэша и инвалидацию, чтобы данные не оставались устаревшими, когда они действительно изменились.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию