Next.js中的缓存
Next.js 通过缓存渲染工作和数据请求来提高应用程序的性能并降低成本。本页深入介绍了 Next.js 的缓存机制、可用于配置它们的 API 以及它们之间的交互方式。
您需要知道: 此页面帮助您了解 Next.js 的底层工作原理,但这不是使用 Next.js 高效开发所必需的知识。Next.js 的大多数缓存策略由您的 API 使用情况决定,并且默认配置即可实现最佳性能,无需或仅需极少的配置。
概述
以下是不同缓存机制及其用途的高级概述:
| Mechanism | What | Where | Purpose | Duration |
|---|---|---|---|---|
| Request Memoization | Return values of functions | Server | Re-use data in a React Component tree | Per-request lifecycle |
| Data Cache | Data | Server | Store data across user requests and deployments | Persistent (can be revalidated) |
| Full Route Cache | HTML and RSC payload | Server | Reduce rendering cost and improve performance | Persistent (can be revalidated) |
| Router Cache | RSC Payload | Client | Reduce server requests on navigation | User session or time-based |
默认情况下,Next.js 会尽可能多地进行缓存以提高性能并降低成本。这意味着路由会被静态渲染,数据请求会被缓存,除非您选择退出。下图展示了默认的缓存行为:即在构建时静态渲染路由以及首次访问静态路由时的情况。
缓存行为会根据路由是静态渲染还是动态渲染、数据是否被缓存、以及请求是初次访问还是后续导航的一部分而有所不同。根据您的具体需求,您可以为各个路由和数据请求配置缓存行为。