Как очищать getStaticProps по запросу с сервера в nextjs?
Задача: сохранять данные на front-end с сервера и при запросе пользователя, выдавать готовую страницу (с чем собственно отлично справляется nextjs и getStaticProps). Но иногда эти данные на сервере изменяются заказчиком и он требует моментального изменения на front-end(срочные правки в текстах или например какие-то акции временные и пр).
В самом nextjs есть API к которому можно обращаться, и впринципе с сервера можно так обращаться к nextjs и выполнять какие-то действия, но собственно что нужно сделать чтобы перегенерировать отдельные страницы?
Сервер можно перезапускать только в определенное время, а заказчик требует изменение данные в срочном порядке. Даже пару минут или даже секунд для заказчика являются важными и терять даже в это время клиентов нельзя.
Ответы (1 шт):
Если вы имеете ввиду статически сгенерированные страницы, то в next.js можно их регенерировать по истечении определённого времени с помощью опции revalidate.
function Blog({ posts }) {
return (
<ul>
{posts.map((post) => (
<li>{post.title}</li>
))}
</ul>
)
}
// This function gets called at build time on server-side.
// It may be called again, on a serverless function, if
// revalidation is enabled and a new request comes in
export async function getStaticProps() {
const res = await fetch('https://.../posts')
const posts = await res.json()
return {
props: {
posts,
},
// Next.js will attempt to re-generate the page:
// - When a request comes in
// - At most once every second
revalidate: 1, // In seconds
}
}
export default Blog
Если данный вариант не подходит, то только переходить на динамический контент загружаемый из бд.