网站首页 > 教程分享 正文
localStorage、sessionStorage是H5引入的新特性,是WEB端存储数据或者缓存数据、提升用户体验的原生的解决方案,两兄弟统称Web Storage。其中localStorage主要作为本地存储使用,除非主动删除,否则一直存放于浏览器中;而sessionStorage主要用于临时保存同一窗口(或标签页)数据,数据会在窗口(或标签页)关闭时“销毁”。
与传统的cookie相比较,有一些共同特性比如“域名独立存放”,同时Web Storage存储还做了一些“变通”,一方面是使用方法原生,封装好无需自定义,即开即用;另一方面存储容量显著提升,localStorage、sessionStorage存储空间最高可达5MB,为业务功能设计增加了很多便利和灵活性。但与cookie相比较,localStorage、sessionStorage也有一些小“缺陷”,比如不支持属性定义比如过期时间设置,这为一些业务场景的应用制造了一些“麻烦”(设计者的初衷并非如此哈),如某接口数据不频繁,缓存在sessionStorage是个不错的选择,但接口数据又不是一成不变的,功能设计上期望能隔一段时间刷新一次(过期自动刷新)。
下面就介绍一种localStorage、sessionStorage自定义过期时间或属性的方法,解决实际业务问题。
(环境说明:node.js/javascript开发环境)
Bash
// 核心思想是将value以对象字符串的形式存放 提取时parse成对象再进行后续处理
export const webStorage = {
validStorageTypes: ['sessionStorage', 'localStorage'],
setItem (storageType, key, token, userinfo, duration = 86400000) {
if (!this.validStorageTypes.includes(storageType)) return null
const obj = {
token: token,
userinfo: userinfo,
expire: new Date().getTime() + duration
}
window[storageType].setItem(key, JSON.stringify(obj))
},
getItem (storageType, key) {
if (!this.validStorageTypes.includes(storageType)) return null
const cacheData = window[storageType].getItem(key)
if (!cacheData) return null
const parsedCacheData = JSON.parse(cacheData)
const currentTime = new Date().getTime()
if (currentTime < parsedCacheData.expire) {
return parsedCacheData.token
} else {
window[storageType].removeItem(key)
}
return null
},
removeItem (storageType, key) {
if (!this.validStorageTypes.includes(storageType)) return null
window[storageType].removeItem(key)
}
}
localStorage、sessionStorage的引入确实给数据缓存带来了诸多便利,但安全问题不容忽视,存放数据时建议做安全加密处理,后续有时间展开讨论。
猜你喜欢
- 2024-09-17 两个网页,改变A页面,在B页面怎么监听到同一个localStorage变化
- 2024-09-17 Web存储Cookie,sessionStorage和localStorage
- 2024-09-17 localStorage 竟然支持存储 JavaScript 几乎所有数据类型!!!
- 2024-09-17 前端数据存储!解析SessionStorage与LocalStorage,附实例代码
- 2024-09-17 JavaScript-如何使用localStorage存储对象
- 2024-09-17 本地存储 localStorage(本地存储权限)
- 2024-09-17 说说session和cookie区别与主要应用场景,localStorage的特点
- 2024-09-17 vue3本地存储的2种方案localStorage和indexdb的优劣
- 2024-09-17 对不起 localStorage,现在我爱上 localForage了!
- 2024-09-17 「成都校区」-- localStorage 存储数据
你 发表评论:
欢迎- 05-14C#开发串口通信实例及串口基础
- 05-14C#窗体多线程启动,暂停,继续,取消
- 05-14DotNet 入门:(一)环境安装
- 05-14C#中使用命名管道进行进程通信的实例
- 05-14使用C#编程判断某一年是否为闰年
- 05-14C#学习随笔—自定义控件(线,箭头等图形)
- 05-14UE4基础知识总结(三)
- 05-14C#使用 WinForms 实现打印基础操作
- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)