文章

Next.js

在 Next.js 里,我怎么判断页面该静态化、缓存,还是实时请求

发布于2026-05-12更新于2026-05-12阅读时间4 分钟
文章目录
正文

在 Next.js 里,我怎么判断页面该静态化、缓存,还是实时请求

很多人刚接触 Next.js 时,最容易卡住的不是组件写法,而是数据到底该怎么取。是 build 时提前生成,还是请求时动态拿?是让页面缓存一会儿,还是每次都请求最新数据?这件事如果判断错了,要么浪费性能,要么把本来该快的页面做得很重。

我先看数据变化频率

我现在做判断时,第一反应不是“这个页面重要吗”,而是“这份数据变得快不快”。
  • 几天才变一次的内容
  • 一小时更新一次的数据
  • 几秒就可能变化的结果
变化频率不同,策略就应该不同。像博客文章、帮助文档、专题页,这类内容通常很适合提前生成。因为它们读多写少,用户更在意首屏快和 SEO 稳定。

适合静态化的页面

如果页面满足这些特征,我会优先往静态化方向想:
  • 内容更新不频繁
  • 对首屏速度要求高
  • 希望被搜索引擎稳定抓取
  • 页面结构基本固定
例如博客详情页、产品介绍页、落地页、教程页,通常都适合静态生成,必要时再搭配按周期重新验证。
ts
export const revalidate = 3600
这个策略的核心不是“永远不更新”,而是让页面大多数时间都走缓存,只在合理周期内重建。

适合缓存但不必完全静态的页面

有一类页面不会频繁变化,但又不适合在构建阶段一次性全做完,比如价格页、排行榜、聚合列表、频道首页。
这时候我更喜欢让它在请求时生成,但带缓存策略。这样既能避免每次都重新跑完整逻辑,也能保证数据不是旧到离谱。
我会把这类页面理解成“准实时页面”:
  • 数据会变,但不用秒级同步
  • 页面访问量不低
  • 生成成本相对高
  • 可以接受短时间缓存

必须实时请求的页面

如果页面具备这些特征,我一般不会犹豫,直接按动态处理:
  • 强依赖当前登录用户
  • 数据变化非常频繁
  • 每个请求看到的内容可能都不同
  • 结果和 cookie、header、权限强相关
比如后台看板、订单状态、消息中心、搜索结果、个性化推荐,这些内容如果硬缓存,往往比“慢一点”更危险,因为它可能直接把旧数据或者别人的视图送到用户面前。

我常用的判断顺序

  1. 先看数据多久变一次。
  2. 再看用户是否需要立刻看到最新结果。
  3. 再评估页面生成成本是不是很高。
  4. 最后才决定是静态、缓存还是动态。
这个顺序能避免一种常见误区:只盯着技术名词选方案,却没先看业务到底需要“多新”的数据。

结语

Next.js 的价值,不只是把 SSR、SSG、ISR 这些缩写摆在一起,而是给了我们按业务场景选择渲染和缓存策略的空间。我的经验是,能静态就别实时,能缓存就别每次重算,只有真正需要最新结果的页面,才值得为“实时”付出额外成本。

信息

文章信息

Next.js 的强项不只是服务端渲染,更在于它把静态生成、缓存和动态请求放进了一套统一模型里。本文结合博客、价格页、后台看板和搜索结果这些场景,聊聊我现在怎么判断一个页面应该提前生成、设置缓存,还是每次都实时请求。

最后更新于 2026-05-12阅读时长 4 分钟
Next.js