我知道启用带回退的ISR需要在页面中导出getStaticPaths
:
export const getStaticPaths = () => {
return {
paths: []
, fallback: 'blocking'
}
}
但是,getStaticPaths
仅适用于动态路由,如[slug].jsx
。
我想要像index.jsx
一样为静态路由启用ISR,这是不可能的吗?
附加信息:我不能在构建时预先生成页面。
发布于 2021-09-11 02:42:52
在getStaticPaths
中,fallback
key用于控制如何处理动态路由的新路径(不是在构建时生成)。它既可以返回404
页面(fallback: false
),也可以允许Next.js生成新页面(fallback: blocking
或fallback: true
)。
由于您的index.jsx
不是动态路由,因此这不适用,并且不需要回退,因为该页面总是在构建时预先生成的。
另一方面,Incremental Static Regeneration允许您重新生成现有页面。它是通过getStaticProps
中的revalidate
属性启用的,可以在动态和非动态路由中使用。
// index.jsx
export async function getStaticProps() {
return {
props: {
//...
}
revalidate: 10 // Enables page regeneration
}
}
当向index.jsx
发出请求时,它将首先显示缓存的、预先生成的页面。
从文档中:
在最初的请求之后和10秒之前对页面的任何请求都会被缓存,并在10秒的窗口中显示产品,下一次请求仍然会显示缓存的(陈旧的) page.
https://stackoverflow.com/questions/69141392
复制