對storage進行了封裝:WebStorageCache

jopen 9年前發布 | 14K 次閱讀 前端技術 WebStorageCache

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.baiduhome.net/lib/view/home/1437275042506

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!