SWR 维护的缓存在哪里,客户端还是服务器端?

问题描述

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

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

解决方法

来自文档 cache

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

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

您可以使用 JavaScript Map 数据类型(如 const provider = new Map())创建缓存提供程序。

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

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

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

出于性能考虑,客户端内存缓存,网页存储读写速度非常快,所以最好使用客户端缓存。

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...