一、这个技术是什么?
页面每次请求都重新访问数据库和外部 API,会增加延迟和成本;缓存太久又可能展示旧数据。
Next.js 的数据获取与缓存机制帮助开发者明确:数据在哪里获取、结果能否复用、什么时候需要重新验证。
二、没有它之前发生了什么?
每次渲染都重新请求数据
↓
重复查询和首屏变慢
↓
开发者手动维护缓存和刷新逻辑
↓
缓存失效规则分散且容易出错
↓
Next.js 把获取、缓存和重新验证纳入渲染模型
三、核心概念
1. Server-side Data Fetching
服务端组件可以在服务器读取数据,避免把数据库访问代码发给浏览器。
2. Request Memoization
同一次渲染过程中,相同请求可以被复用,减少重复获取。
3. Data Cache
数据结果可以按策略缓存,而不是每次请求都重新计算。
4. Revalidation
重新验证可以按时间触发,也可以在内容变更后主动触发。
5. Dynamic Data
依赖用户身份、实时数据或请求参数的数据,需要谨慎选择缓存策略。
四、运行流程
五、面试复习
一句话回答
Next.js 把数据获取放在服务端渲染模型中,并通过缓存和重新验证减少重复请求;具体策略取决于数据是否稳定、是否个性化和是否需要实时性。
高频追问
- 为什么页面显示旧数据?
- 缓存和重新验证有什么关系?
- 用户私有数据能不能直接缓存?
- 什么情况下应该使用动态渲染?
容易答错
不要把“服务端获取”自动等同于“永远缓存”。获取位置和缓存策略是两个不同问题。
六、项目展示
知识平台可以对 Markdown 内容使用构建时静态生成,对 Hermes Agent 更新后的内容触发重新构建;这样内容页稳定、部署简单,也容易回滚。