Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

localstorage 本地缓存的应用 #44

Open
mishe opened this issue Dec 9, 2015 · 2 comments
Open

localstorage 本地缓存的应用 #44

mishe opened this issue Dec 9, 2015 · 2 comments

Comments

@mishe
Copy link
Owner

mishe commented Dec 9, 2015

localstorage本地缓存方案

具体代码参见 https://github.com/mishe/store

解决数据过期问题

本地实际应用建议绑定当前的用户,解决不能用户看到不同的缓存,可以做下适当的包装,比如:

setCache:function(key,value,exp){
    //过期时间默认1天
    exp=exp||86400;
    store.set(key+'_'+curUserID, value,exp);

},

getCache:function(key){
    return store.get(key+'_'+curUserID);
}

todo:

另外还又可以尝试结合一些简单的加解密技术,来保证客户端缓存数据的相对安全,但势必会造成性能上的损失。

简单API

设置缓存

//简单的缓存
store.set('a',{a:1,b:2})

//增加过期时间:单位是秒
store.set('a',{a:1,b:2},3600)

//清除指定缓存
store.set('a',null)
//或者
sotre.set('a');//为了代码的可读性,不建议这样使用

获取缓存的数据

store.get('a')
//log:{a:1,b:2}

删除指定缓存

store.del('a');

删除所有过期的缓存

store.clearExp();

清除所有缓存

store.clearAll()

添加一个缓存

//和set的区别是,这个会检测是否已经存在同名的缓存,如果存在,就不做任何处理
// 单set是会覆盖当前值的
store.add('b',{c:1,d:1},3600)

设置缓存的过期时间

//过期时间由原来的1小时,变成了2小时,并且是从创建时间计算的
store.setExp('a',7200)

读取缓存的过期时间

store.getExp('a')
@mishe
Copy link
Owner Author

mishe commented Jan 18, 2016

本地数据的加解密可以使用本人的stringCompressJS,目前性能还需要优化,大字符串压缩比一般在50%以上。

@mishe
Copy link
Owner Author

mishe commented Jan 18, 2016

数据加密已经完成,具体见:store_code.js,对数据的存储和获取分别做了加解密。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant