我正在开发一个使用 SWR 的 Next JS 项目,我想知道 SWR 的缓存存储在哪里,是在客户端还是在服务器上?
我问是因为如果它在客户端上,因此每个用户的缓存都不同,那么我可以发出特定于用户的请求,而不必担心缓存会向用户显示其他用户的数据
从文档缓存:
默认情况下,SWR 使用全局缓存在所有组件之间存储和共享数据。现在,有一种新方法可以使用您自己的缓存提供程序对其进行自定义。
SWR 使用Map数据类型作为默认缓存提供程序
您可以使用 JavaScriptMap
数据类型(如const provider = new Map()
.
从理论上讲,您可以使用任何数据类型、状态管理库(如redux
Web 存储cookies
、IndexDB)作为缓存提供程序。
缓存提供程序必须符合以下定义:
interface Cache<Data = any> {
get(key: string): Data | null | undefined
set(key: string, value: Data): void
delete(key: string): void
}
在性能方面考虑,客户端内存缓存,web存储读写速度非常快,所以最好使用客户端缓存。
服务器端缓存一般采用Redis等分布式缓存技术。