0

场景:我有一个这样的 url/posts/:id/edit 使用标准 nextjs 结构,文件位于 posts -> [id] -> edit.tsx

在这个 url 中,我们从 id 进行 AJAX 调用,从 react 获取帖子并向用户显示编辑表单。

我们希望避免 nextjs 每次调用服务器并为每个 id 运行 getStaticProps 和 getStaticPaths 的麻烦。

为所有不同的 id 重用 getStaticProps 就足够了,

export async function getStaticProps({ locale }: GetStaticPropsContext): Promise<GetStaticPropsResult<SSRConfig>> {
    return {
        props: {
            ...(await serverSideTranslations(locale || DEFAULT_LOCALE, tNamespaces)),
        },
    };
}

而且我们根本不需要 getgetStaticPaths方法,但接下来会强制使用它。

现在 next 在 .next/static/pages 下为每个可能的 id 生成一个 html,json 对,从而导致大量无用数据。

所有不同的帖子 id 都有相同的 props,基本上对于这个特定的页面,我们想要返回,不管 id 相同的 js 和 html 返回,然后停止创建这么多页面并运行 getStaticPaths。

没有方法我们不能保留页面,否则下一次构建或启动不起作用。

知道如何优化这个用例吗?我们有很多这样的场景,还有电子邮件确认令牌等,在 .next/static/pages 下为每个 id 生成数十万个无用的 html。我们现在有 cron 作业删除那些但不是正确的解决方案

4

0 回答 0