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

深入解析 Vue 项目中的缓存刷新机制:原理与实战

目录

  • 前言
  • 1. Demo
  • 2. 知识拓展

前言

在 Vue 项目中,缓存通常用于存储用户信息、角色权限、系统设置等,以提高页面加载速度并减少 API 请求

这里使用 web-storage-cache 作为封装的本地存储工具,支持 localStorage 和 sessionStorage 方式存储数据

1. Demo

适用于所有涉及权限、用户数据更新的场景,如角色变更、权限调整、系统升级等
使用缓存提高性能,但需要适时刷新,避免数据过时问题
通过 封装 useCache 统一管理本地存储,方便切换 localStorage 和 sessionStorage,提高代码复用性

/*** 配置浏览器本地存储的方式,可直接存储对象数组。*/import WebStorageCache from 'web-storage-cache'type CacheType = 'localStorage' | 'sessionStorage'export const CACHE_KEY = {// 用户相关ROLE_ROUTERS: 'roleRouters',USER: 'user',// 系统设置IS_DARK: 'isDark',LANG: 'lang',THEME: 'theme',LAYOUT: 'layout',DICT_CACHE: 'dictCache',// 登录表单LoginForm: 'loginForm',TenantId: 'tenantId'
}export const useCache = (type: CacheType = 'localStorage') => {const wsCache: WebStorageCache = new WebStorageCache({storage: type})return {wsCache}
}export const deleteUserCache = () => {const { wsCache } = useCache()wsCache.delete(CACHE_KEY.USER)wsCache.delete(CACHE_KEY.ROLE_ROUTERS)// 注意,不要清理 LoginForm 登录表单
}

对应具体Demo如下:

<template><el-button plain @click="refreshMenu"><Icon class="mr-5px" icon="ep:refresh" />刷新菜单缓存</el-button>
</template><script setup>
import { useCache } from '@/hooks/web/useCache'
import { CACHE_KEY } from '@/hooks/web/useCache'
import { useMessage } from '@/hooks/web/useMessage'const { wsCache } = useCache()
const message = useMessage()const refreshMenu = async () => {try {await message.confirm('即将更新缓存刷新浏览器!', '刷新菜单缓存')wsCache.delete(CACHE_KEY.USER)wsCache.delete(CACHE_KEY.ROLE_ROUTERS)location.reload()} catch {}
}
</script>

2. 知识拓展

上述实战知识点,核心拓展如下:

refreshMenu 该方法的主要作用是:

  1. 弹出确认框,提示用户即将刷新缓存,并要求确认操作
  2. 删除本地存储中的 USER 和 ROLE_ROUTERS 缓存,确保下次访问时重新获取最新数据
  3. 通过 location.reload() 重新加载页面,使更新的缓存生效
const refreshMenu = async () => {try {await message.confirm('即将更新缓存刷新浏览器!', '刷新菜单缓存')// 清空缓存wsCache.delete(CACHE_KEY.USER)wsCache.delete(CACHE_KEY.ROLE_ROUTERS)// 刷新浏览器location.reload()} catch {}
}

1.2 CACHE_KEY 配置
CACHE_KEY 统一管理缓存键名,避免在多个地方直接使用字符串,从而降低维护成本:

export const CACHE_KEY = {ROLE_ROUTERS: 'roleRouters',  // 角色路由信息USER: 'user',                 // 用户信息IS_DARK: 'isDark',            // 深色模式LANG: 'lang',                 // 语言THEME: 'theme',               // 主题LAYOUT: 'layout',             // 布局DICT_CACHE: 'dictCache',      // 字典缓存LoginForm: 'loginForm',       // 登录表单(不应清除)TenantId: 'tenantId'          // 租户ID
}

1.3 useCache 封装
useCache 方法封装了 WebStorageCache,便于在项目中按需切换 localStorage 和 sessionStorage:

export const useCache = (type: CacheType = 'localStorage') => {const wsCache: WebStorageCache = new WebStorageCache({storage: type})return {wsCache}
}

localStorage:数据持久化,即使关闭浏览器也不会丢失。
sessionStorage:数据在会话期间有效,关闭浏览器后清除

相关文章:

深入解析 Vue 项目中的缓存刷新机制:原理与实战

目录 前言1. Demo2. 知识拓展 前言 在 Vue 项目中&#xff0c;缓存通常用于存储用户信息、角色权限、系统设置等&#xff0c;以提高页面加载速度并减少 API 请求 这里使用 web-storage-cache 作为封装的本地存储工具&#xff0c;支持 localStorage 和 sessionStorage 方式存储…...

【嵌入式Linux应用开发基础】进程间通信(1):管道

目录 一、管道的基本概念 二、管道的工作原理 三、管道的类型 3.1. 匿名管道&#xff08;Anonymous Pipe&#xff09; 3.2. 命名管道&#xff08;Named Pipe&#xff0c;FIFO&#xff09; 四、管道的读写规则 4.1. 匿名管道的读写规则 4.2. 命名管道的读写规则 五、管…...

【DeepSeek】Mac m1电脑部署DeepSeek

一、电脑配置 个人电脑配置 二、安装ollama 简介&#xff1a;Ollama 是一个强大的开源框架&#xff0c;是一个为本地运行大型语言模型而设计的工具&#xff0c;它帮助用户快速在本地运行大模型&#xff0c;通过简单的安装指令&#xff0c;可以让用户执行一条命令就在本地运…...

DHCP详解,网络安全零基础入门到精通实战教程!

一、DHCP简介 DHCP(Dynamic Host Configuration Protocol),动态主机配置协议&#xff0c;是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时&#xff0c;DHCP服务器就会根据DHCP协议给客户端分配IP&#xff0c;使得客户机能够利用这个IP上网。 DHCP前身是BOOTP&am…...

蓝桥杯篇---IAP15F2K61S2中断

文章目录 前言简介中断源1.外部中断2.定时器中断3.串口中断4.ADC中断5.PCA中断6.SPI中断7.PWM中断 中断优先级中断相关寄存器1.IE2.IP3.TCON4.SCON 中断使用步骤1.配置中断源2.使能中断3.设置优先级4.编写中断服务程序5.清除中断标志 示例代码&#xff1a;外部中断使用示例代码…...

【Prometheus】prometheus结合pushgateway实现脚本运行状态监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...

立创实战派ESP32-S3烧录小智AI指南

小智 AI 聊天机器人-开源项目介绍 本项目是一个开源项目&#xff0c;主要用于教学目的。我们希望通过这个项目&#xff0c;能够帮助更多人入门 AI 硬件开发&#xff0c;了解如何将当下飞速发展的大语言模型应用到实际的硬件设备中。无论你是对 AI 感兴趣的学生&#xff0c;还是…...

深度学习的集装箱箱号OCR识别技术,识别率99.9%

集装箱箱号OCR识别技术是一项结合计算机视觉和规则校验的复杂任务&#xff0c;以下是其关键要点及实现思路的总结&#xff1a; 1、集装箱号结构&#xff1a;11位字符&#xff0c;格式为公司代码(3字母)和序列号(6数字)以及校验码(1数字)和尺寸/类型代码(可选)&#xff0c;例如…...

使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络&#xff08;CNN&#xff09;是深度学习中的重要组成部分&#xff0c;广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中&#xff0c;我们将使用 PyTorch 实现一个标准的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;并介绍各个部分的作用。 什…...

Casbin 权限管理介绍及在 Go 语言中的使用入门

引言 在现代软件开发过程中&#xff0c;权限管理是一个至关重要的环节&#xff0c;它关系到系统的安全性和用户体验。Casbin 是一个强大的访问控制库&#xff0c;支持多种访问控制模型&#xff0c;如 ACL&#xff08;访问控制列表&#xff09;、RBAC&#xff08;基于角色的访问…...

如何在Windows下使用Ollama本地部署DeepSeek R1

参考链接&#xff1a; 通过Ollama本地部署DeepSeek R1以及简单使用的教程&#xff08;超详细&#xff09; 【DeepSeek应用】DeepSeek R1 本地部署&#xff08;OllamaDockerOpenWebUI&#xff09; 如何将 Chatbox 连接到远程 Ollama 服务&#xff1a;逐步指南 首先需要安装oll…...

【分布式理论12】事务协调者高可用:分布式选举算法

文章目录 一、分布式系统中事务协调的问题二、分布式选举算法1. Bully算法2. Raft算法3. ZAB算法 三、小结与比较 一、分布式系统中事务协调的问题 在分布式系统中&#xff0c;常常有多个节点&#xff08;应用&#xff09;共同处理不同的事务和资源。前文 【分布式理论9】分布式…...

详细介绍Tess4J的使用:从PDF到图像的OCR技术实现

在当今的数字化时代&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术被广泛应用于文档扫描、图片文字识别以及其他自动化数据提取任务。Tesseract作为一款强大的开源OCR引擎&#xff0c;在处理图像和PDF中的文本提取方面具有非常高的准确度和效率。本文将详细介绍如何…...

postgres源码学习之简单sql查询

postgres源码学习之sql查询 sql查询的主流程读取sql解析sql重写sql获得执行计划执行查询操作结果返回 sql查询的主流程 参考postgres的处理流程 由上一节&#xff0c;我们可以看到&#xff0c;当有新的连接通过权限认证之后&#xff0c;将进入等待接收sql语句&#xff0c;并执…...

C#项目05-猜数字多线程

本项目利用多线程&#xff0c;通过点击按钮猜数字&#xff0c; 知识点 线程 基本概念 进程:一组资源&#xff0c;构成一个正在运行的程序&#xff0c;这些资源包括地址空间、文件句柄以及程序启动需要的其他东西的载体。 线程:体现一个程序的真实执行情况&#xff0c; 线…...

前端504错误分析

前端出现504错误(网关超时)通常是由于代理服务器未能及时从上游服务获取响应。以下是详细分析步骤和解决方案: 1. 确认错误来源 504含义:代理服务器(如Nginx、Apache)在等待后端服务响应时超时。常见架构:前端 → 代理服务器 → 后端服务,问题通常出在代理与后端之间。…...

《C语言动态顺序表:从内存管理到功能实现》

1.顺序表 1.1 概念 顺序存储的线性表&#xff0c;叫顺序表。 1.2顺序表存放的实现方式 可以使用数组存储数据&#xff0c;可以实现逻辑上相连&#xff0c;物理内存上也相连。也可以使用malloc在堆区申请一片连续的空间&#xff0c;存放数据&#xff0c;实现逻辑上相连&#…...

通过API 调用本地部署 deepseek-r1 模型

如何本地部署 deepseek 请参考&#xff08;windows 部署安装 大模型 DeepSeek-R1&#xff09; 那么实际使用中需要开启API模式&#xff0c;这样可以无拘无束地通过API集成的方式&#xff0c;集成到各种第三方系统和应用当中。 上遍文章是基于Ollama框架运行了deepSeek R1模型…...

DeepSeek-学习与实践

1.应用场景 主要用于学习与使用DeepSeek解决问题, 提高效率. 2.学习/操作 1.文档阅读 文档 DeepSeek -- 官网, 直接使用 --- 代理网站 --- 极客智坊 https://poe.com/DeepSeek-R1 https://time.geekbang.com/search?qdeepseek -- 搜索deepseek的资料 资料 20250209DeepSeekC…...

DeepSeek和ChatGPT的全面对比

一、模型基础架构对比&#xff08;2023技术版本&#xff09; 维度DeepSeekChatGPT模型家族LLAMA架构改进GPT-4优化版本参数量级开放7B/35B/120B闭源175B位置编码RoPE NTK扩展ALiBiAttention机制FlashAttention-3FlashAttention-2激活函数SwiGLU ProGeGLU训练框架DeepSpeedMeg…...

无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解

对于做 Wi-Fi 的朋友&#xff0c;大家可能天天都需要配置各种加密和模式&#xff0c;但是有时候可能会一时忘记如何配置&#xff0c;基于日常的工作经验&#xff0c;总结了一篇文档&#xff1a;《无线网络安全配置指南&#xff1a;WPA、WPA2、WPA3及WAPI详解》&#xff0c;具体…...

撕碎QT面具(6):调节窗口大小后,控件被挤得重叠的解决方法

问题&#xff1a;控件重叠 分析原因&#xff1a;因为设置了最小大小&#xff0c;所以界面中的大小不会随窗口的变化而自动变化。 处理方案&#xff1a;修改mimumSize的宽度与高度为0&#xff0c;并设置sizePolicy为Expanding&#xff0c;让其自动伸缩。 结果展示&#xff08;自…...

解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱

一、引言 机器学习算法种类繁多&#xff0c;它们各自有着独特的优势和应用场景。前面我们学习了线性回归算法、逻辑回归算法、决策树算法。而今天&#xff0c;我们要深入探讨的是其中一种经典且广泛应用的聚类算法 —— K - 平均算法&#xff08;K-Means Algorithm&#xff09…...

【Linux】匿名管道的应用场景-----管道进程池

目录 一、池化技术 二、简易进程池的实现&#xff1a; Makefile task.h task.cpp Initchannel函数&#xff1a; 创建任务&#xff1a; 控制子进程&#xff1a; 子进程执行任务&#xff1a; 清理收尾&#xff1a; 三、全部代码&#xff1a; 前言&#xff1a; 对于管…...

机器学习(1)安装Pytorch

1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log&#xff1a; Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...

Linux 多Python版本统一和 PySpark 依赖 python 包方案

背景 Linux 服务器经常有多个Python版本&#xff0c;比如 Python2 有两个版本&#xff0c;Python3 有两个版本。在使用上容易混淆&#xff0c;而且有些需要新增一些 module 更容易&#xff0c;安装如果路径不统一&#xff0c;导致日常使用时&#xff0c;会出现找不到新安装mod…...

PostgreSQL的学习心得和知识总结(一百六十九)|深入理解PostgreSQL数据库之 Group By 键值消除 的使用和实现

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…...

DeepSeek是什么?两种模型的对比?

最近DeepSeek的风也是很大&#xff0c;它也是很火&#xff0c;那么DeepSeek是什么呢&#xff1f; 什么是DeepSeek&#xff1f; DeepSeek是一家专注通用人工智能&#xff08;AGI&#xff09;的中国科技公司&#xff0c;主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型&a…...

跟着 Lua 5.1 官方参考文档学习 Lua (2)

文章目录 2.3 – Variables2.4 – Statements2.4.1 – Chunks2.4.2 – Blocks2.4.3 – Assignment2.4.4 – Control Structures2.4.5 – For Statement2.4.6 – Function Calls as Statements2.4.7 – Local Declarations 2.3 – Variables Variables are places that store v…...

Python基于循环神经网络的情感分类系统(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...