我正在使用 next.js 10 并有一个 [slug] 页面,它从 Contentful CMS 创建动态页面。我正在更改 CMS 中的 slug 并next dev
正确运行旧 slug 返回 404 并且新 slug 工作。
但是,当我构建并运行next start
旧 slug 时仍然返回一个缓存页面,新 slug 可以正常工作。
我返回 revalidate 10 并假设页面应在 10 秒后刷新
export const getStaticProps: GetStaticProps<SlugRoutePageProps> = async ({
params,
}) => {
....
....
const pageData = await getPageData(params.slug)
if (pageData.total === 0) return { notFound: true }
return {
props: {
pageType: "DynamicPage",
pageProps: {
pageData,
},
revalidate: 10,
},
}
}
在getStaticPaths
我有fallback: "blocking"
,也试过fallback: true
没有区别。
编辑:
getPageData
是对内容 API 的基本调用 - 无缓存
const getPageData = async (
slug: string,
): Promise<FetchPagesResult> => {
const client = createContentfulClient()
return client.getEntries<Page>({
content_type: "page",
"fields.slug": slug,
include: 5,
order: "-sys.updatedAt",
limit: 1,
})
}