我使用Next.js并在Vercel托管我的项目。网站背后是WordPress,它提供无头数据。由于有很多页面,我生成的构建页面不是所有的(对于分页的前三个)。
然而,当我现在单击指向构建过程中尚未生成的页面的链接时,需要很长时间才能触发动态构建过程(在运行时)。回退页面不应该立即发送吗?
export async function getStaticPaths() {
const paths = await getPostsPaths(); // Generates the first three pages of the pagination
return {
paths,
fallback: true
}
}
export async function getStaticProps(props) {
const globalData = await getGlobalData();
const posttype = props.params.posttype;
const slug = props.params.slug;
const id = await getPostsId(`/${posttype}/${slug}/`); // Fetch the post id
if (!id) {
return {
notFound: true
}
}
const post = await getPostsSingle(id);
return {
props: {
globalData,
post
},
revalidate: 300
}
}
export default function Page(props) {
const router = useRouter();
if (router.isFallback) {
return (
<>Loading...</> // This should delivered immediately
)
}
return (
// Page is generated here
)
}
瓶颈在哪里?不是应该更早地调用回退页面吗?
链接:https://kaktuell-website.pechschwarz.dev/werkstoffe/seite/4/(点击分页中的链接)。
1条答案
按热度按时间pjngdqdw1#
首先,我检查了你的网站,无法重现这个问题。
如果函数
getPostsPaths
、getGlobalData
、getPostsId
和getPostsSingle
正在进行网络调用以获取数据,特别是从WordPress获取数据,则这些调用可能需要一段时间。您可能需要检查您正在使用的WordPress API是否存在任何延迟问题或速率限制。另外,对我来说,看起来你已经将revalidate
字段设置为300秒。这意味着生成的页面将在300秒后失效,并在下一次请求时重新生成。这对于初始加载来说不应该是一个问题,但对于经常访问的用户(您可能是开发人员)可能会有影响。