我有一个产品页面,位于/products/[slug].js
我在使用增量静态生成来构建一个Wordpress/GraphQL网站:
export async function getStaticProps(context) {
const {params: { slug }} = context
const {data} = await client.query(({
query: PRODUCT_SLUG,
variables: { slug }
}));
return {
props: {
categoryName: data?.productCategory?.name ?? '',
products: data?.productCategory?.products?.nodes ?? []
},
revalidate: 1
}
}
export async function getStaticPaths () {
const { data } = await client.query({
query: PRODUCT_SLUGS,
})
const pathsData = []
data?.productCategories?.nodes && data?.productCategories?.nodes.map((productCategory) => {
if (!isEmpty(productCategory?.slug)) {
pathsData.push({ params: { slug: productCategory?.slug } })
}
})
return {
paths: pathsData,
fallback: true,
}
}
除了一个问题外,一切都按预期工作。如果我从WordPress中删除先前发布的产品,NextJs会提供缓存页面,而不是显示404 - 未找到
页面,我认为这是应该的工作方式,即如果某些内容没有重建,则显示以前(陈旧的)页面。
但是,我如何完全删除特定产品的缓存,该产品已被删除并且不再从PRODUCT_SLUGS
查询中获取?
我已阅读fallback
选项:true,false,blocking
,但似乎都无法解决此问题。
有没有解决此问题的方法,或者使用next.config.js
配置或另一种解决方法?