Як працює revalidate?
revalidate - це механізм у Next.js, який керує тим, коли закешовані дані або сторінки вважаються застарілими і мають бути оновлені.
Найпростіше думати про revalidate як про таймер свіжості даних.
Базова ідея
Коли ти вказуєш revalidate, ти кажеш Next.js:
«Ці дані можна вважати актуальними N секунд, а потім їх потрібно оновити на сервері»
Поки дані «свіжі»:
- сервер не робить нових запитів
- використовується кеш
- сторінка віддається миттєво
Коли дані «протухли»:
- Next.js перегенерує дані
- оновлює кеш
- далі всі отримують нову версію
Як працює revalidate крок за кроком
- Перший користувач відкриває сторінку
- Next.js завантажує дані і зберігає результат у кеш
- Запускається таймер
revalidate - Поки час не минув:
- усім користувачам віддається кеш
- Коли час минув:
- наступний запит тригерить оновлення
- сервер заново завантажує дані
- кеш замінюється на свіжий
Важливо: користувач не чекає на оновлення - він або отримує стару, або вже оновлену версію
Де використовується revalidate
1. Статичні сторінки (Pages Router)
revalidate вказує, як часто перезбирати сторінку після білда.
- сторінка залишається статичною
- перезбирається лише за потреби
- без повного перезбирання сайту
2. fetch в App Router
У сучасному Next.js revalidate застосовується на рівні запиту даних, а не всієї сторінки.
Це означає:
- кожне завантаження даних має свій кеш
- різним даним можна задати різний час оновлення
- сторінка збирається із «шматочків» із різною свіжістю
Приклад логіки:
- список товарів оновлюється раз на 60 секунд
- опис категорії - раз на 10 хвилин
- шапка сайту - майже ніколи
Що відбувається технічно
Якщо сильно спростити:
revalidate = 0-> кеш вимкнено, дані завжди свіжіrevalidate = 60-> дані оновлюються максимум раз на хвилинуrevalidate = 3600-> дані оновлюються раз на годину
Next.js сам вирішує:
- коли використовувати кеш
- коли зробити новий запит
- коли оновити HTML
Чим revalidate корисний
revalidate дозволяє:
- не робити запити на кожен захід
- зберегти швидкість статичних сторінок
- при цьому не тримати дані «замороженими»
Це особливо важливо для:
- блогів
- каталогів
- новинних сторінок
- великих сайтів із часто змінюваним контентом
Важливе обмеження
revalidate:
- не підходить для персональних даних
- не гарантує оновлення «секунда в секунду»
- чудово працює для публічного контенту
Якщо дані мають бути завжди актуальними, потрібен серверний рендер на кожен запит.
Коротко по суті
revalidate - це:
- час життя кешу
- контроль частоти оновлення даних
- основа ISR у Next.js
Він дозволяє знайти баланс між: швидкістю, актуальністю і навантаженням на сервер
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.