F
Frontend по-флотски 👨‍💻
@frontend_pasta4.4K подп.
3.5Kпросмотров
78.4%от подписчиков
26 января 2026 г.
stats📷 ФотоScore: 3.8K
Cache Components в Next.js 16 — новая модель кэширования 👨‍💻 В Next.js 16 появился Cache Components — новый подход к кэшированию, построенный вокруг директивы 'use cache'. Главное изменение: кэширование теперь полностью opt-in. Никакого неявного кэширования — весь динамический код выполняется в момент запроса по умолчанию Как включить? // next.config.ts const nextConfig = { cacheComponents: true, }; export default nextConfig; Как работает? Директива 'use cache' применяется к страницам, компонентам или функциям. Компилятор автоматически генерирует ключи кэша — не нужно вручную прописывать зависимости Cache Components дополняет Partial Pre-Rendering (PPR), который появился ещё в 2023. PPR позволял рендерить части страницы статически, а части — динамически через Suspense. Теперь эта концепция получила полноценный API Есть 3 варианта где будет храниться кэш в зависимости от директивы 'use cache' — in-memory на сервере 'use cache: remote' — внешнее хранилище (Redis) 'use cache: private' — память браузера Пример 1: Кэширование функции получения данных import { cacheLife, cacheTag } from 'next/cache'; async function getProducts() { 'use cache'; cacheLife('hours'); // кэш на несколько часов cacheTag('products'); // тег для инвалидации const res = await fetch('https://api.store.com/products'); return res.json(); } Теперь getProducts() вернёт закэшированный результат. Компилятор автоматически сгенерирует ключ кэша на основе аргументов функции Пример 2: Кэширование целого компонента async function ProductCard({ id }: { id: string }) { 'use cache'; cacheLife('days'); cacheTag(product-&#036;{id}); const product = await getProduct(id); return ( <div className="card"> <h2>{product.name}</h2> <p>{product.price} ₽</p> </div> ); } Каждый ProductCard с уникальным id получит свой кэш. При изменении товара инвалидируем только его: revalidateTag('product-123', 'max') Пример 3: Partial Pre-Rendering (PPR) Cache Components отлично работает с PPR — можно комбинировать статику и динамику на одной странице: import { Suspense } from 'react'; export default async function ProductPage({ params }) { const { id } = await params; return ( <div> {/ Статическая часть — закэширована /} <ProductDetails id={id} /> {/ Динамическая часть — рендерится на лету /} <Suspense fallback={<div>Загрузка...</div>}> <PersonalizedRecommendations productId={id} /> </Suspense> </div> ); } async function ProductDetails({ id }: { id: string }) { 'use cache'; cacheLife('max'); const product = await fetchProduct(id); return <div>{product.description}</div>; } Статическая оболочка страницы отдаётся мгновенно, а персонализированные рекомендации подгружаются стримингом Документация и анонс 👇 https://nextjs.org/docs/app/api-reference/config/next-config-js/cacheComponents https://nextjs.org/blog/next-16#cache-components
3.5K
просмотров
3095
символов
Нет
эмодзи
Да
медиа

Другие посты @frontend_pasta

Все посты канала →
Cache Components в Next.js 16 — новая модель кэширования 👨‍ — @frontend_pasta | PostSniper