next数据获取
Next.js中推荐在服务端获取数据,有以下好处:
- 可以直接访问后端数据源(例如数据库或者其他内网服务)
- 通过防止敏感信息向客户端泄漏
- 减少客户端和服务端的来回通信,提高加载速度
有四种方法可以获取数据:
- 在服务器上,使用 fetch
- 在服务器上,使用第三方库
- 在客户端上,通过路由处理程序
- 在客户端上,使用第三方库
在服务器上使用fetch获取数据
Next.js 扩展了原生的 fetch Web API,允许你为服务器上的每个fetch请求配置缓存和重新验证行为
缓存数据
默认情况下,Next.js 会自动缓存服务器上数据缓存中的返回值 fetch 。这意味着可以在生成时或请求时获取数据,缓存数据,并在每个数据请求上重用
- 缓存数据: 使用fetch()获取数据将默认为
cache: force-cache,它将缓存请求数据,直到手动失效 - 指定不缓存数据:通过将
cache : no-store,我们可以指示不应缓存所获取的数据。这类似于pages目录中的getServerSideProps - 指定缓存秒数:使用fetch()获取数据可以使用
revalidate,它将缓存请求指定的秒数 (revalidate表示重新验证)
// 缓存数据
fetch(`https://...`, { cache: 'force-cache' })
// 指定不缓存数据
fetch(`https://...`, { cache: 'no-store' })
// 指定缓存秒数
fetch(`https://...`, { next: { revalidate: 60 } })