当前位置: 首页 > news >正文

localStorage、sessionStorage、vuex区别和使用感悟

一、介绍及区别
localStorage的生命周期是永久;不手动在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。
sessionStorage的生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭,那么所有通过sessionStorage存储的数据也会被清空。
localStorage和sessionStorage都是以文件的形式存储在本地,都是只能存储字符串类型;存储数据大小一般都是5MB。localStorage在同源的页面间是共享的(页面属于相同域名和端口); sessionStorage是在同源的窗口中始终存在的数据,但是不同的窗口或标签页间无法共享sessionStorage的信息

Vuex存储的是状态(state),这些状态存储在内存中;Vuex(响应式的)专为Vue.js应用程序开发的状态管理模式,主要用于组件之间的传值,可以存储多种数据类型,并且数据变化是响应式的;
读取内存比读取硬盘速度快,因此使用Vuex可能会比使用localStorage更快
缺点:当刷新页面时,Vuex存储的值会丢失

二、问题场景
我用的场景是打开多个窗口查看不同年度的数据,导致使用localStorage存储的年度信息被覆盖,比如A窗口是2023年,B窗口是2024年,当在打开B窗口年度切换到2024年,这时localStorage存储的就是2024,A窗口再去使用localStorage存储的年度时就变成了2024而不是正确的2023了,所以更改方案时;1:使用sessionStorage在全局存储,并存储一个中间值作为动态的key,来存储年度;2:使用vuex全局存储

// 存一个中间变量区分打开的窗口
// 判断中间变量是否存在,如果存在就移除,防止无休止的生成更多的中间变量if (sessionStorage.getItem('medianWindow')) sessionStorage.removeItem('medianWindow')// 生成0-1000的随机数const random = Math.round(Math.random() * 1000)// 将随机数储存给'medianWindow'的键值对sessionStorage.setItem('medianWindow', random)// 判断备份的随机数和存储的用户信息是否存在,如果存在移除旧的用户信息if (sessionStorage.getItem('medianWindowCopy') && sessionStorage.getItem(`user${sessionStorage.getItem('medianWindowCopy')}`)) {window.sessionStorage.removeItem(`user${sessionStorage.getItem('medianWindowCopy')}`)}// 将随机数复制一份存储为'medianWindowCopy'的键值对sessionStorage.setItem('medianWindowCopy', random)// 存储用户信息sessionStorage.setItem(`user${sessionStorage.getItem('medianWindow')}`, JSON.stringify(data.menuInfo))

如下图明显看出,A窗口键值为user147,B窗口键值为user58
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/32db85ad4ea747459945f9aa5d3d2b46.png

三、当刷新页面时,Vuex存储的值会丢失解决方案
3.1、手动操作本地存储:在全局监听页面刷新事件,在刷新时将Vuex中的状态值存储到本地存储(如sessionStorage)中。然后从本地存储中获取这些值,并重新赋值给Vuex的状态。最后,移除本地存储中的数据。
3.2、将Vuex中的数据直接保存到浏览器缓存中:可以将Vuex中的数据保存到sessionStorage、localStorage或cookie中。这种方法适用于需要长期保存的数据,但需要注意数据的安全性和存储空间限制。
3.3、在页面刷新的时候再次请求远程数据:可以在页面刷新的时候再次发起请求,获取远程数据并动态更新Vuex的状态。这种方法适用于少量数据,并且可以避免网络延迟的问题。
3.4、在父页面向后台请求远程数据:在父页面向后台请求远程数据,并且在页面刷新前将Vuex的数据先保存至sessionStorage(以防请求数据量过大页面加载时拿不到返回的数据)。这样可以解决大数据量存储的问题

相关文章:

localStorage、sessionStorage、vuex区别和使用感悟

一、介绍及区别 localStorage的生命周期是永久;不手动在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。 sessionStorage的生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭,那么所有通过sessionStorage存…...

Linux用户提权

新建用户 用root账户修改文件,添加信任用户 使用sudo提权,可以使用 **root删除新建账户**...

ZooKeeper 安装

ZooKeeper 的安装包括单机模式安装,以及集群模式安装。 单机模式较简单,是指只部署一个 zk 进程,客户端直接与该 zk 进程进行通信。在开发测试环境下,通常来说没有较多的物理资源,因此我们常使用单机模式。 当然在单…...

Realm Management Extension领域管理扩展之安全状态

RME基于Arm TrustZone技术。TrustZone技术在Armv6中引入,提供以下两个安全状态: 安全状态(Secure state)非安全状态(Non-secure state)以下图表显示了在AArch64中的这两个安全状态以及通常在每个安全状态中找到的软件组件: 该架构将在安全状态运行的软件与在非安全状态运…...

统计学-R语言-2.2

文章目录 前言导入.RData文件方式1方式2方式3 导入程序包方式一方式二 总结 前言 本篇文章是将上篇得软件安装完,对其部分功能进行介绍。 导入.RData文件 在我们日常练习时会有.RData文件导入,并对其进行分析,下面是两种方导入.RData文件。…...

Windows 项目从0到1的部署

目录 一. 安装jdk 1.1 安装jdk 1.2 配置jdk的环境配置jdk 1.3 配置成功 二. 配置tomcat 2.1 启动tomcat 2.2 防火墙设置 三. 安装MySQL 3.1 安装步骤 3.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一. 安装jdk 这里给大家准备好了jdk和…...

基于SSM的戏剧推广网站的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…...

监督学习 - 梯度提升机(Gradient Boosting Machines,GBM)

什么是机器学习 梯度提升机(Gradient Boosting Machines,GBM)是一种集成学习方法,通过将多个弱学习器(通常是决策树)组合成一个强学习器来提高模型的性能。GBM的训练过程是通过迭代,每一步都根…...

Mac M1 Parallels CentOS7.9 Install Jenkins

官网: https://www.jenkins.io/ 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-11.0.21_linux-aarch64_bin.tar.gz root10.211.55.34:~# 解压 mkdir -p /opt/java && tar -zxvf jdk-11…...

【基于 InternLM 和 LangChain 搭建你的知识库】学习笔记

学习参考文档【基于 InternLM 和 LangChain 搭建你的知识库】 学习参考链接【书生・浦语大模型实战营第三课作业(基础进阶)】 理论 实战 收集原始数据 收集2018年-2020年几年间的优秀数学建模论文 修改脚本文件,测试文件 作业 复现课程知识库助手搭建过程 La…...

Redis面试系列-03

1. 为什么 Redis 集群的最大槽数是 16384 个? 在redis节点发送心跳包时需要把所有的槽放到这个心跳包中,以便让节点知道当前集群信息,即1638416k,在发送心跳包时使用char进行bitmap压缩后是2k(2*8 (8bit)*1024(1k)16K…...

如何结合告警丰富获取拨测失败的原因?

本期最佳实践为您揭秘: 如何使用pongo2模板语言获取指定的字符串内容如何结合告警丰富,过滤出有效的告警信息 「 背 景 」 在此前的最佳实践当中,我们为大家介绍了一个好的告警通知应该具备的条件。在一般的指标告警中,在告警信…...

学习JavaEE的日子 day12 构造方法 类的制作

Day12 需求:创建人类的对象,并操作对象 分析: 人类 - Person 属性:name、sex、age 方法:eat、sleep 场景:创建多个对象,去操作对象 //测试类:该类中有main方法,测试我们写…...

Mybatis-Plus基础学习

目录 第一章、快速了解mybatis-plus1.1)相关概念介绍1.2)为什么使用MyBatis-Plus1.3)学习过程中的疑问 第二章、 MyBatis-Plus与SpringBoot集成2.1)使用Spring Initializr创建SpringBoot项目2.2)安装Lombok插件2.3&…...

C#微信公众号HIS预约挂号系统源码

微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时预约挂号、自费、医保结算,同时还可以查询检查检验报告等就诊信息,真正实现了让信息“多跑路”,让群众“少跑腿”。系统…...

MySQL基础笔记(6)函数

函数:是指一段可以直接被另一段程序调用的程序或者代码~(MySQL内置) 一.字符串函数 trim不能去除中间的空格~ select concat(jsl,1325): 执行如上的代码,返回字符串"jsl1325"。 select lower(JSL); 执行如上的代码&…...

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(2)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...

Defi安全--Zunami Protocol攻击事件分析

其它相关内容可见个人主页 1 Zunami攻击事件相关信息 2023.8.13发生在Ethereum上发生的攻击,存在两个攻击交易,具体信息如下: 攻击合约地址:Contract Address 攻击合约 攻击者地址:Zunami Protocol Exploiter 攻击…...

虾皮电商 电商平台:虾皮(Shopee)东南亚领先的电子商务平台

在当今数字化时代,电子商务平台的兴起改变了人们的购物方式。虾皮(Shopee)作为东南亚地区领先的电子商务平台,为消费者提供了便捷、多样化的购物体验。由新加坡的Sea Group(前称Garena)于2015年创立&#x…...

【降龙算法】基于QT插件机制实现一个机器视觉算法小框架

机器视觉行业有各种各样的拖拉拽框架,也叫做低代码平台,例如国内海康的VisionMaster: 一个机器视觉框架需要包含各种算法模块,日志窗口,图像显示窗口等等,【降龙算法】就是做了一个入门级的机器视觉算法框…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...