对于接口数据过多的接口可以使用缓存提升用户体验和性能,同时也可以防止用户重复请求过多次数
data: {
leftMenuList:[],//左侧菜单数据
rightContent:[],//右侧的商品数据
},
onLoad: function (options) {
//利用缓存技术来提高性能,先判断本地存储有没有旧数据,有就使用本地的没有就发送新请求
const Cates = wx.getStorageSync("cates")
if(!Cates){//不存在就发送请求
this.getCates()
}else{
if(Date.now() - Cates.time > 1000*10){//如果存在数据且过期了的话也要发送请求
this.getCates()
}else{//如果存在且没有过期,那么就可以使用缓存中的数据,不用发送请求
let leftMenuList = Cates.data.map((item,index)=>item.cat_name);
let rightContent = Cates.data[0].children;
this.setData({
leftMenuList,
rightContent,
})
}
}
async getCates(i){
let index = i || 0;
const res = await request('/categories');
if(res.meta.status == 200){
wx.setStorageSync('cates', {time:Date.now(),data:res.message})//关键代码请求成功就存入缓存
let leftMenuList = res.message.map((item,index)=>item.cat_name);
let rightContent = res.message[index].children;
this.setData({
leftMenuList,
rightContent,
scrollTop:0
})
}else{
wx.showToast({
title: res.message.meta.msg,
icon: 'none'
})
}