intermediate
Data fetching на сервере
Fetch рядом с источником данных, контролируйте кэш, избегайте waterfalls и держите request-only детали на сервере.
Fetch рядом с источником данных в Server Components или route handlers. `fetch` с опциями кэша Next.js (`cache`, `next.revalidate`, `next.tags`) или dynamic routes, когда чтение per-request.
Параллелизуйте независимые запросы через `Promise.all`, чтобы избежать waterfalls. Request memoization дедуплицирует одинаковые fetch в одном render pass.
export default async function Page() {
const [user, posts] = await Promise.all([getUser(), getPosts()]);
return <Feed user={user} posts={posts} />;
}
На интервью: дефолты кэша, когда `no-store`, и связь tags с revalidation.
Типовые ошибки: последовательные await для несвязанных данных, кэш персонализированных ответов, client refetch дублирует server work.
Компромисс: агрессивный кэш против корректности auth-scoped данных.
Чеклист:
- Параллельный server fetch.
- cache или dynamic по чувствительности данных.
- Теги кэша, связанные с мутациями.
- Request-only headers на сервере.