缓存模式
缓存模式可在全局或请求级等不同粒度下设置。全局设置时,所有由相同 alova 实例创建的 method 实例都会继承该设置。
注意
是否使用缓存模式,以及使用哪种缓存模式需要根据场景而定,下面在单独介绍不同缓存模式时将会提及它们的使用场景。
内存模式(默认)
内存模式将缓存放在内存中,这意味着刷新页面缓存即失效,是最常用的缓存模式。
内存模式一般用于解决短时间内(几分钟或几秒钟)频繁请求相同数据带来的性能消耗,例如当你在写 todo 详情页的时候,你可能会想到用户会频繁在 todo 列表中点击查看详情,如果用户重复查看某条详情时不再重复请求接口,并且能立即返回数据,提升了响应速度的同时也减小了服务器压力。此时我们就可以为某个 todo 详情 method 实例设置响应数据缓存。
alovaInstance.GET('/todo/list', {
// ...
localCache: {
// 设置缓存模式为内存模式
mode: 'memory',
// 单位为毫秒
// 当设置为`Infinity`,表示数据永不过期,设置为0或负数时表示不缓存
expire: 60 * 10 * 1000
}
});
内存模式为默认模式,你可以这样简写
alovaInstance.GET('/todo/list', {
// ...
localCache: 60 * 10 * 1000
});
GET 请求将默认设置 300000ms(5 分钟)的内存缓存时间,开发者也可以自定义设置。
如果你需要全局统一设置缓存模式,见本节底部的 全局设置缓存模式
内存缓存模式示例
缓存占位模式
这个缓存模式用于,当你不希望应用每次进入时都显示 Loading 图标,而希望使用旧数据替代时,你可以使用缓存占位模式,它的体验比 Loading 更好。
缓存占位模式下,data将立即被赋值为上次缓存的旧数据,你可以判断如果有旧数据则使用它替代 Loading 展示,同时它将发送请求获取最新数据并更新缓存,这样就达到了既快速展示实际数据,又获取了最新的数据。
在 method 实例上设置:
const todoListGetter = alovaInstance.Get('/todo/list', {
// ...
localCache: {
// 设置缓存模式为持久化占位模式
mode: 'placeholder',
// 缓存时间
expire: 60 * 10 * 1000
}
});
如果你需要全局统一设置缓存模式,见本节底部的 全局设置缓存模式