localstorage设置过期时间_web存储sessionStorage, localStorage,indexDB
时间: 2023-07-26 17:05:28 浏览: 142
localStorage 和 sessionStorage 是 Web 存储 API 中的两种不同类型的存储方式,它们都是基于键值对的存储方式。其中 localStorage 是持久化存储,数据不会过期,除非手动清除或者用户清除浏览器缓存;而 sessionStorage 是会话存储,数据只在当前会话有效,关闭浏览器或者标签页后会被删除。
localStorage 和 sessionStorage 都没有提供直接设置过期时间的方法。但可以通过在存储时记录时间戳,然后在获取时判断是否过期来实现类似的功能。示例代码如下:
```javascript
//设置localStorage
localStorage.setItem('key', JSON.stringify({
value: 'value',
expiredAt: new Date().getTime() + 1000 * 60 * 60 //过期时间为1小时后
}));
//获取localStorage
var data = JSON.parse(localStorage.getItem('key'));
if (data.expiredAt < new Date().getTime()) {
//过期了
localStorage.removeItem('key');
} else {
//未过期
console.log(data.value);
}
```
对于 indexDB,也没有提供直接设置过期时间的方法,但可以在存储时记录过期时间戳,并在获取时进行判断和删除。示例代码如下:
```javascript
//打开数据库
var request = window.indexedDB.open('myDB', 1);
request.onsuccess = function(event) {
var db = event.target.result;
//获取对象仓库
var store = db.transaction(['myStore'], 'readwrite').objectStore('myStore');
//设置过期时间为1小时后
var expiredAt = new Date().getTime() + 1000 * 60 * 60;
//存储数据
store.put({
key: 'key',
value: 'value',
expiredAt: expiredAt
});
//获取数据
store.get('key').onsuccess = function(event) {
var data = event.target.result;
if (data.expiredAt < new Date().getTime()) {
//过期了,删除数据
store.delete('key');
} else {
//未过期
console.log(data.value);
}
};
};
```
需要注意的是,以上示例代码只是一种简单的实现方式,具体实现还需要考虑数据量、性能、数据安全等方面的问题。
阅读全文