✅ 三个关键点:
使用 Link 或 router.push() 导航时,会重新请求 RSC Payload(新的 _rsc 请求)
使用浏览器后退/前进按钮时,不会重新请求 RSC,使用已有的 RSC Payload
Link 组件的 prefetch 会缓存 5 分钟(如果在 5 分钟内导航,使用 prefetch 的结果)
💡 理解 "not cached but reused":
这个看似矛盾的说法指的是:Link 导航时不缓存(每次重新请求),但浏览器前进/后退时会重用(不重新请求)。 这样既保证了数据新鲜度,又优化了浏览器导航体验。
服务端渲染时间:2025-12-17T09:54:09.478Z
💡 这个时间戳在服务端生成。如果 RSC Payload 被重用,这个时间不会变化。
客户端挂载时间:加载中...
挂载次数(此次会话):0
状态更新次数:0
💡 观察重点:
⚠️ 注意:即使浏览器后退,客户端组件也可能重新挂载。 这是因为 Router Cache 的 staleTime = 0,组件不会自动保留状态。
⚠️ 预期:会发起新的 _rsc 请求,服务端时间会变化
过滤:输入 "_rsc" 来只看 RSC 请求
记录上面绿色框中的时间
观察 Network 面板
观察 Network 面板
router-cache?_rsc=xxx 请求点击 🚫 图标清空请求列表
⚠️ 重要:不要点击 Page A 中的 Link,而是点击浏览器的后退按钮 ←
_rsc 请求Link 组件会自动 prefetch,你会看到 page-a?_rsc=xxx 请求
🔍 如何观察 RSC 请求:
📊 请求格式:
每次新请求都会有不同的 _rsc 参数值
⚡ 关键观察点:
查看运行 Next.js 的终端,观察服务端渲染日志:
Link 导航返回:会看到新的日志(重新渲染)
浏览器后退:不会看到新的日志(重用 RSC)