0

我正在开发一个使用 SWR 的 Next JS 项目,我想知道 SWR 的缓存存储在哪里,是在客户端还是在服务器上?

我问是因为如果它在客户端上,因此每个用户的缓存都不同,那么我可以发出特定于用户的请求,而不必担心缓存会向用户显示其他用户的数据

4

1 回答 1

3

从文档缓存

默认情况下,SWR 使用全局缓存在所有组件之间存储和共享数据。现在,有一种新方法可以使用您自己的缓存提供程序对其进行自定义。

SWR 使用Map数据类型作为默认缓存提供程序

您可以使用 JavaScriptMap数据类型(如const provider = new Map().

从理论上讲,您可以使用任何数据类型、状态管理库(如reduxWeb 存储cookies、IndexDB)作为缓存提供程序。

缓存提供程序必须符合以下定义:

interface Cache<Data = any> {
  get(key: string): Data | null | undefined
  set(key: string, value: Data): void
  delete(key: string): void
}

在性能方面考虑,客户端内存缓存,web存储读写速度非常快,所以最好使用客户端缓存。

服务器端缓存一般采用Redis等分布式缓存技术。

于 2021-07-07T07:41:42.797 回答