我正在使用 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,
},
}
}
in getStaticPaths
I have fallback: "blocking"
,也尝试过fallback: true
没有区别。
Edit:
getPageData
是对 contentful 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,
})
}