其他
静态页面需要定期更新但不想全站重建时,用 ISR…
适用于大部分静态、但内容会周期性变化的页面,在 Next.js 中通过增量静态再生避免每次变更都全站重建。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
静态页面需要定期更新但不想全站重建时,用特定
解决思路
- 用懒加载方式在构建后加入新页面:新页面在首次请求时立即生成。
- 在 `getStaticPaths` 中返回 `fallback: true`,让构建时缺失的页面不返回 404,而是可以渲染 fallback。
- 在缺失页面首次生成期间,前端展示 fallback 页面或 loading 指示器;示例在组件中用 `useRouter()` 判断 `router.isFallback`,为 `true` 时返回 `<div>Loading...</div>`。
- 在 `getStaticProps` 中根据 `params.id` 获取每个页面的数据,例如 `getProductFromDatabase(params.id)`,并通过 `props` 传给页面组件。
- 新页面在后台生成完成后缓存该页面;后续访客请求时立即返回缓存版本。
- 更新已有页面时,为页面定义合适的超时时间;超时到达后触发页面再验证。
- 再验证期间用户继续看到旧版本,直到再验证完成;即使用 stale-while-revalidate 策略。
- 在 `getStaticProps` 中设置 `revalidate` 时间间隔,例如 `revalidate: 60`,让页面每 60 秒在后台用新数据刷新。
- 请求到来时先返回可用的静态页面,后台刷新完成后,新版本静态文件可供后续请求使用。
- 对内容变更后需要立即更新的场景,考虑按需再验证:使用 `revalidatePath`、`revalidateTag`。
- 在 Next.js 13+ App Router 中,使用 `generateStaticParams` 和 async components 实现 ISR。
- 页面组件从 `getStaticProps` 接收 `products` 等 props 并渲染列表等静态内容。
适用边界 · 注意事项
- 内容实时变化且不能接受过期数据时,例如实时比分、股票行情。
- 页面完全动态且按用户个性化时,SSR 更合适。
- 当再验证窗口导致不同用户看到不同版本、体验混乱时。