Next.js Блог Страпи: контент не обновляется

#javascript #next.js #strapi

Вопрос:

У меня есть Next.js приложение в производстве. Управление моим контентом осуществляется через Strapi. Я извлекаю весь контент с getStaticProps функцией на каждой странице (на самом деле 2 страницы, небольшой блог).

Однако, когда я создаю новый контент или обновляю существующий, мой Next.js приложение не извлекает новый или обновленный контент.

Может быть, из-за выборки во время сборки? Если да, могу ли я иметь возможность получать контент на стороне клиента и пользоваться преимуществами SEO?

Есть идеи?

Большое спасибо! 🙂

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

Ответ №1:

Рассмотрена возможность создания revalidate политики постепенной статической регенерации для обновления устаревшего содержимого.

https://nextjs.org/docs/basic-features/data-fetching#incremental-static-regeneration

 // 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 10 seconds
    revalidate: 10, // In seconds
  }
}
 

Если это не соответствует вашей политике обновления, вам придется перейти к рендерингу на стороне сервера и получать данные по каждому запросу.

Комментарии:

1. Спасибо за вашу помощь, это действительно здорово работает с моей стороны! Но у меня есть вопрос, как это работает на самом деле? Это вызывает сборку каждые 10 секунд (в этом случае)? Или что перестраивать только по требованию? Я имею в виду, это запускает перестройку только тогда, когда пользователь заходит на эту страницу? Еще раз спасибо!

2. Из документов потока запросов: > После 60-секундного окна следующий запрос по-прежнему будет отображать кэшированную (устаревшую) страницу. Next.js запускает регенерацию страницы в фоновом режиме. > Как только страница будет успешно сгенерирована, Next.js приведет к аннулированию кэша и покажет обновленную страницу продукта. Если восстановление фона завершится неудачно, старая страница останется неизменной.

3. Да, я читал это, но происходит ли перестройка каждые 60 секунд или только тогда, когда пользователь заходит на страницу?

4. «следующий запрос все равно покажет кэшированную (устаревшую) страницу». Так что нет, никакого запроса, никакого триггера регенерации, никакой регенерации.