SSG(静态生成)在构建时如何获取页面数据?有什么限制?
SSG 在构建阶段执行取数逻辑,把结果渲染进静态 HTML,之后所有请求都返回这份固定文件(可 CDN 缓存)。
// Next.js getStaticProps / Nuxt routeRules.prerender
export async function getStaticProps() {
const posts = await getAllPosts() // 构建时执行一次
return { props: { posts } }
}限制:
- 数据在构建时固化,不能依赖请求时的参数(如用户 cookie、实时查询)
- 数据更新需重新构建(或用 ISR 折中)
- 页面数量极大时构建时间会变长(可用按需生成/ISR 缓解)
适合:营销页、文档、博客、商品详情等「大体不变」的内容。