Я думаю, что это довольно банальный вопрос, но я ничего не могу найти в Google.
Я изучаю NextJs (используя TypeScript), и у меня есть сайт, успешно работающий с динамическими маршрутами, SSR и добавочной регенерацией, все настроено и развернуто на Vercel. Вот пример кода GetStaticProps
и GetStaticPaths
в моем обработчике динамического маршрута:
export const getStaticPaths: GetStaticPaths = async () => {
const routes = new CmsHelper().GetRoutes();
const paths = (await routes).items.map((item, index, items) => {
return item.fields.urlPath;
})
return {
paths: paths,
fallback: 'blocking',
};
}
export const getStaticProps: GetStaticProps = async (context) => {
const urlParts = context.params?.url as string[] || [];
const urlPath = `/${urlParts.join('/')}`;
const article = await new CmsHelper().GetArticle(urlPath);
return {
props: {
article
},
revalidate: 10,
}
}
Если я запрашиваю новый путь, который был опубликован в cms после времени сборки, он успешно регенерируется на сервере и возвращает страницу.
Все идет нормально.
Однако, если я отменяю публикацию маршрута в своей CMS ... он все равно возвращается приложением, если я не перестрою и не разверну (или не перезапущу процесс другим способом в dev).
Итак, мой вопрос: как мне динамически заставить NextJs удалить динамический маршрут из своего кеша GetStaticPaths?
Я понимаю, что GetStaticProps
будет вызываться не чаще одного раза в 10 секунд из-за конфигурации revalidate
. Но насколько мне известно, GetStaticPaths
будет вызываться только в том случае, если запрос приходит с маршрута, который в настоящее время не кэшируется (?)
Другими словами, для интеграции с автономной CMS, как я могу поддерживать отмену публикации или переименование страниц с помощью NextJ, не вызывая повторной сборки / развертывания?
Заранее спасибо!