您的位置:首页 > 移动开发 > 微信开发

小程序 内存缓存

2018-01-11 10:30 162 查看
项目背景和上一篇博客一样。

是一个和业务逻辑相关的问题了,就是我做页面路由(确定跳转到哪个page)要从后台拉数据,但是同样的接口在页面里面也会用到,为了更好的利用这一些数据,我在HTTP请求那里做了一点缓存。

js代码是这样写的

var data ={};
var memory=function() {
function push(key, value) {
data[key] = {
time: utils.now(),
data: value
}
}
function pop(key) {
var obj = data[key];
if (obj){
delete cache[key];
if (utils.now() - obj.time < 3)return obj.data;
}
return null;
}
function invalid(){
data = {};
}
return {
push: push,
pop: pop,
invalid: invalid,
all: function () {
return data;
}
}
}
module.exports = memory


只拦截GET网络请求,所以网络部分是这样封装的:

function GET(options) {
//TODO 缓存键值需要优化
var memory = cache.memory();
if (options && options.url) {
if (options.cache) {
//拦截成功回调
var originSuccess = options.success;
if (originSuccess) {
options.success = (resp) => {
memory.push(options.url, resp);
originSuccess(resp);
}
}
} else {
//命中缓存
var target = memory.pop(options.url);
if (target && options.success) options.success(target);
if (target) return;
}
}
net(options, 'GET')
}


ps:net 里面会处理很多我们这边的错误码,代码细节就不放上来了。

定义了缓存的有效时间,简单有效的满足了背景需求。用的时候,就是
options.cache=true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  memorycache 小程序