JS前端缓存缓存对象封装

来源:互联网 发布:win7 php开发环境搭建 编辑:程序博客网 时间:2024/06/05 22:51
/**
 * 缓存对象
 */
var C = {
    "set"function(key, value, endtime) {
        var key = arguments[0] ? arguments[0] : '';
        var value = arguments[1] ? arguments[1] : '';
        var endtime = arguments[2] ? arguments[2] : 60 * 60 * 24 * 15;
        if (key == '') {
            return false;
        }
        if (key && value == '') {
            return C.del(key);
        }
        if (key && value != '') {
            var saveobj = {
                data: value,
                //time: time(), //保存时间
                etime: time() + endtime
            }
            localStorage.setItem(key, JSON.stringify(saveobj));
            return true;
        }
    },
    "clear"function() {
        localStorage.clear();
    },
    "del"function(key) {
        localStorage.removeItem(key);
    },
    "get"function(key) {
        var res = json_decode(localStorage.getItem(key));
        if (!res) {
            return false;
        }
        if (res.etime < time()) {
            localStorage.removeItem(key);
            return false;
        }
        return res.data;
    },
    "all"function() {
        var a = new Array();
        for (var i = 0; i < localStorage.length; i++) {
            var key = localStorage.key(i);
            var res = json_decode(localStorage.getItem(localStorage.key(i)));
            if (res.etime < time()) {
                localStorage.removeItem(key);
            else {
                a[key] = res.data;
            }
        }
        return a;
    },
    "gc"function() {
        var ctime = time();
        for (var i = 0; i < localStorage.length; i++) {
            var key = localStorage.key(i);
            var res = json_decode(localStorage.getItem(localStorage.key(i)));
            if (res.etime < time()) {
                localStorage.removeItem(key);
            }
        }
    },
    "init"function() {
        var s = arguments[0] ? arguments[0] : 3;
        s = s * 1000;
        C.gc();
        setInterval(function() {
            C.gc();
        }, s);
    }
}
 
//Json数值处理
function json_encode(obj) {
    return JSON.stringify(obj)
}
 
function json_decode(s) {
    var j = eval('(' + s + ')');
    return j;
}
 
//获取当前时间戳
function time() {
    return Math.floor(new Date().getTime() / 1000);
}



#C对象使用方式

//初始化过期回收时间,传入回收精度   30为秒

C.init(30);

//设置缓存

C.set("key","value");

//设置带过期时间的缓存  200后过期

C.set("key","value",200);

//保存一个对象

var req = {}

req.id = 5;

req.name = "wangcong";

req.time = time();

C.set("wc",req);

//获取缓存

C.get("key")

//删除缓存

C.del("key");

//清空缓存

C.clear()

//返回缓存空间所有

C.all()



0 0