Next.js/Vercel:动态页面生成速度慢

ercv8c1e  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(592)

我使用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/(点击分页中的链接)。

pjngdqdw

pjngdqdw1#

首先,我检查了你的网站,无法重现这个问题。
如果函数getPostsPathsgetGlobalDatagetPostsIdgetPostsSingle正在进行网络调用以获取数据,特别是从WordPress获取数据,则这些调用可能需要一段时间。您可能需要检查您正在使用的WordPress API是否存在任何延迟问题或速率限制。另外,对我来说,看起来你已经将revalidate字段设置为300秒。这意味着生成的页面将在300秒后失效,并在下一次请求时重新生成。这对于初始加载来说不应该是一个问题,但对于经常访问的用户(您可能是开发人员)可能会有影响。

相关问题