场景:我有一个这样的 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 作业删除那些但不是正确的解决方案