Next.js, revalidate, почему данные не обновились
Одна из частых ситуаций в App Router выглядит так, страница открылась заново, серверный рендер вроде бы был, а данные на экране остались прежними. На практике это часто нормальное следствие revalidate.
Данные считаются достаточно свежими в течение заданного окна. Пока это окно не закончилось, Next.js может переиспользовать уже полученный ответ. Поэтому страница может пересчитываться, а data fetched оставаться тем же. Внешне это выглядит как данные не обновились, хотя на самом деле сработала выбранная стратегия кэширования.
Полезный вещь в том, чтобы перестать ждать от revalidate постоянной свежести. Это не режим всегда новый ответ, а компромисс. Для каталогов, списков и витрин он часто подходит лучше, чем no-store, потому что снижает число запросов и даёт предсказуемое окно обновления.
Статья на Хабр Проект: Goods Finder Stepik: Next.js I: JavaScript 2026
#nextjs #AppRouter #caching #revalidate #datacache #servercomponents #react #javascript #frontend #webdev
· 23.05
У нас было такое же на проекте. Решили через revalidateTag который вызываем после каждой записи. ISR для чтения плюс on-demand invalidation при изменениях. Получили и производительность и актуальность данных.
ответить
коммент удалён
· 23.05
revalidateTag после записи - что надо, когда нужна актуальность в реальном времени. ISR для чтения плюс on-demand инвалидация дают лучшее из двух - производительность кэша и свежесть данных. В статье описан базовый сценарий с time-based revalidate, но для часто обновляемого контента теги предпочтительнее
ответить
ответ удалён