对storage进行了封装:WebStorageCache

jopen 9年前

WebStorageCache 基于接口 storage interface。 对storage进行了封装,添加了超时时间,序列化方法。客户端浏览器可以像cookie一样使用。用'localStorage'或者'sessionStorage'进行数据缓存。

使用WebStorageCache,只要在页面上引入下面代码即可。

<script src="src/web-storage-cache.js"></script>  <script>  // create WebStorageCache instance.  var wsCache = new WebStorageCache();  // cache 'wqteam' at 'username', expired in 100 seconds  wsCache.set('username', 'wqteam', {exp : 100});  </script>

也可以在 RequireJS 使用 WebStorageCache:

define(['web-storage-cache'], function(WebStorageCache) {      // create WebStorageCache instance.      var wsCache = new WebStorageCache();      // cache 'wqteam' at 'username', expired in 100 seconds      wsCache.set('username', 'wqteam', {exp : 100});  });

例子

var wsCache = new WebStorageCache();  // 缓存字符串'wqteam' 到 'username' 中, 超时时间100秒  wsCache.set('username', 'wqteam', {exp : 100});  // 超时截止日期 2015 5 18  wsCache.set('username', 'wqteam', {exp : new Date('2015 5 18')});  // 获取缓存中 'username' 的值  wsCache.get('username');  // 缓存简单js对象,默认使用序列化方法为JSON.stringify。可以通过初始化wsCache的时候配置serializer.serialize  wsCache.set('user', { name: 'Wu', organization: 'wqteam'});  // 读取缓存中的简单js对象 - 默认使用反序列化方法为JSON.parse。可以通过初始化wsCache的时候配置serializer.deserialize  var user = wsCache.get('user');  alert(user.name + ' belongs to ' + user.organization);  // 删除缓存中 'username'  wsCache.delete('username');  // 手工删除所有超时CacheItem,  wsCache.deleteAllExpires();  // 清除客户端中所有缓存  wsCache.clear();  // 为已存在的(未超时的)缓存值设置新的超时时间。  wsCache.touch('username',  {exp : 1000});  // 如果缓存中没有key为username2的缓存,则添加username2。反之什么都不做  wsCache.add('username2', 'wqteam', 1000);  // 如果缓存中有key为username的缓存,则替换为新值。反之什么都不做  wsCache.replace('username', 'new wqteam', {exp : 1000});  // 检查当前选择作为缓存的storage是否被用户浏览器支持。  //如果不支持调用WebStorageCache API提供的方法将什么都不做。  wsCache.isSupported();

cookies替代的完美方案。

项目主页:http://www.open-open.com/lib/view/home/1437275042506