星空网 > 软件开发 > Java

页面localStorage用作数据缓存的简易封装

 

最近做了一些前端控件的封装,需要用到数据本地存储,开始采用cookie,发现很容易就超过了cookie的容量限制,于是改用localStorage,但localStorage过于简单,没有任何管理和限制,因此封装了下面这个对象。

我的封装非常直观简单,比网上的一些晦涩的代码明显小巧精简实用。目前只自动回收过期或最后一次访问时间到现在的间隔最大的项,以后有时间,再把访问次数纳入到自动回收的算法中。

window.MyCache = window.MyCache || {  size: 18, //默认队列数量最大值  defaultexpire: 1800, //默认有效期,30分钟(单位:秒)  getCache: function () {    var jsonStr = window.localStorage ? window.localStorage.getItem('myCacheQueue') : '';    return jsonStr ? JSON.parse(jsonStr) : [];  },  get: function (key) {    var queue = this.getCache();    for (var i = 0; i < queue.length; i++) {      if (queue[i].key == key && queue[i].lasttime > (new Date()).getTime()) {        var re = queue[i];        queue.splice(i, 1);        re.times += 1; //访问次数加一        re.lasttime = (new Date()).getTime() + re.expire * 1000;//自动延长过期时间        queue.push(re); //确保项的顺序跟最后访问时间一致        window.localStorage.setItem('myCacheQueue', JSON.stringify(queue));        return re.value;      }    }    return null;  },  set: function (key, value, expire) {//expire:单位为秒的整数,为负表示永不过期,为零表示删除    if (!key || !value || !window.localStorage) return false;    var queue = getCache();    if (queue.length > this.size) { // 队列满的情况下,移除上次访问时间最早的项      queue.splice(0, 1);    }    for (var i = 0; i < queue.length; i++) {      if (queue[i].key == key) {//如果已经存在,则删除        queue.splice(i, 1);      }    }    if (expire != 0) {      var time = !expire ? this.defaultexpire: expire < 0 ? 9999999999999 : expire;      queue.push({ "key": key, "value": value, "times": 0, "expire": time, "lasttime": (new Date()).getTime() + time * 1000 });      window.localStorage.setItem('myCacheQueue', JSON.stringify(queue));    }  }
}

 




原标题:页面localStorage用作数据缓存的简易封装

关键词:缓存

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

TikTok电商引流 | 被低估的高流量标签:毕业季:https://www.ikjzd.com/articles/1661296422998974465
速卖通即将上线的免费退换货是怎么回事?:https://www.ikjzd.com/articles/16613
反诈!跨境电商新型骗局Lazada假冒网站 大量虚假订单,商家必看:https://www.ikjzd.com/articles/1661336761177239554
Amazon Live和TikTok Live对比分析:https://www.ikjzd.com/articles/1661383255044857857
8大跨境电商大卖品牌,你知道哪几个?:https://www.ikjzd.com/articles/16614
“进城”还是“下乡”?跨境电商如何选择合适的出海目的地?:https://www.ikjzd.com/articles/16615
Twitter和Meta的付费认证服务值得购买吗?:https://www.kjdsnews.com/a/1836404.html
零售晚报:携程发布318成绩单 近800万商家GMV增长101% :https://www.kjdsnews.com/a/1836405.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流