简单实用的ajax缓存类

时间:2022-10-21 00:01:13

工作中经常使用的,其实也可以把get和save改成其他方式如cookie、sessionStorage等

//缓存类
function cacheHandler() {
this.data = {};
this.lifeTime = 3600*24; //默认缓存一天
this.setLifeTime = function(lifeTime) {
this.lifeTime = lifeTime;
};
this.save = function(name, value, lifeTime) {
this.data[name] = {
expire: new Date().getSeconds() + (parseInt(lifeTime) || this.lifeTime),
value: value
};
return this.data[name]['value'];
};
this.get = function(name) {
if (this.data[name] == undefined || this.data[name]['expire'] < new Date().getSeconds()) return undefined;
return this.data[name]['value'];
};
this.getOrSave = function(name, value, lifeTime) {
return this.get(name) == undefined && this.save(name, value, lifeTime);
};
this.clear = function(name) {
name ? delete this.data[name] : this.data = {};
};
}

//测试
var cache=new cacheHandler();//实例化个全局缓存对象
$(document).ready(function(){
$("#data").click(function(){
var cache_data=cache.get("cache_data");
if(cache_data){ //缓存中有直接取 否则发ajax请求
//处理结果

}else{
$.ajax({
url: "list.php",
type: 'get',
dataType: "json",
success: function (data) {
//console.log(JSON.stringify(data));
cache.save('cache_data', data);

//处理结果
},
error: function(data, textStatus, errorThrown){
//请求失败要操作的
}
});
}
})
})